2015-07-14 3 views
0

Я отправляю сообщение на сервер с android. Проблема в том, что данные на сервере поступают неправильно, с проблемами кодирования, например «{» поступает как «% 7B%».Отправка сообщения в android с плохой кодировкой

Это код от андроида:

RequestParams params = new RequestParams(); 

    params.put("alta", "{s}"); 
String ruta = "http://www.something.com/receive"; 
client.post(ruta, params, 
     new AsyncHttpResponseHandler() { 
      @Override 
      public void onSuccess(String response) { 

      } 
     } 

Серверная часть просто принимает эти данные, как:

$data = $this->request->data; 
$data =file_get_contents('php://input'); 

ответ

0

Эта проблема не имеет прямого отношения к кодированию текста как таковой.

Как видно из docs for RequestParams, значения текста напрямую включаются в URL-адрес. Поскольку весь текст, включенный в URL-адреса, должен быть закодирован, чтобы включать только символы, разрешенные в URL-адресах (ASCII), текст url encoded.

AsyncHttpClient автоматически делает это кодирование в фоновом режиме, поэтому вы получаете строки в кодированной форме на стороне php.

Для того чтобы получить исходный текст, который вы отправили, вы можете использовать функцию rawurldecode() или urldecode() на стороне php, чтобы декодировать закодированную строку, которую вы получили.

0

Вы должны использовать URLEncoder.encode (...) установить на часть данных запроса. На URL-адресе сервера его декодировать.

Все должно быть в порядке.

Смежные вопросы