2015-06-20 4 views
0

Я борюсь с этой проблемой почти весь день сегодня:Проблема с кодировкой Volley?

Я отправляю запрос POST с помощью Volley на Android с параметрами в виде строки. Строка кажется прекрасной, когда я отправляю ее в свое приложение, но когда она добирается до сервера PHP, кодирование кажется другим (имеет символы типа% 7D и т. Д. Для фигурных скобок). Я не уверен, что происходит не так. Из-за этого json_decode терпит неудачу в PHP, поскольку он получает синтаксическую ошибку.

Я пробовал несколько вещей как на уровне клиента, так и на уровне бэкэнд. На клиенте я пробовал следующее, но ничего не работает.

public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("Content-Type", "application/json; charset=utf-8"); 
      //params.put("Content-Type", "application/json"); 
      return params; 
    } 

    @Override 
    public String getBodyContentType() { 
     return "application/json; charset=utf-8"; 
    } 

На стороне сервера (PHP) Я пытался несколько схем, чтобы изменить его в UTF-8 и т.д., но ничего не работает.

Здесь $ data1 имеет% 7D и т.д., и $ data2 становится нулевым, поскольку json_decode терпит неудачу.

$ data1 = file_get_contents ('PHP: // ввод');

$ data2 = json_decode ($ data1);

Может кто-нибудь помочь?

ответ

1

Предполагая, что формат JSON, попробуйте расширение JSONRequest вместо запроса.

В качестве альтернативы:

  1. Продлить запрос, и объявить поле String (например, PARAMS) , который содержит ваши параметры запроса.

  2. Переопределение getBody:

    @Override общественный байт [] getBody() бросает AuthFailureError {
    возврата params.getBytes (Charset.forName ("UTF-8"));

    }

0

Спасибо. Мне удалось решить это сейчас. В основном я пытался добавить 2 объекта в этот JSON - String и еще один объект класса. Строка была в порядке, но я просто добавлял объект напрямую, используя «put». Я исправил проблему, «поставив» ее после выполнения Gson.ToJson(). Теперь его штраф :)

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