Отправить сообщение данных на арабском языке, используя запрос сообщения залп с multipart - PullRequest
0 голосов
/ 24 сентября 2018

Прежде всего, извините за мой плохой английский, На самом деле я застрял в одной точке.Я хочу отправить арабский текст в базу данных.API уже работает, когда я отправляю его с запросом post man.но когда я посылаю его с запросом Volley, он не посылает правильный текст, он преобразуется в некоторые виды символов вместо реальной строки

пример кода для отправки запроса

VolleyPostRequest volleyMultipartRequest = new VolleyPostRequest(Request.Method.POST, URL,
          response -> {

          },
          error -> {
          }) {
         @Override
         protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put(AppConstants.API_DATA, data);
            params.put("key", POST_API_KEY);
            return params;
         }
      };
      volleyMultipartRequest.setRetryPolicy(new DefaultRetryPolicy(50000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
      AppController.getInstance().getRequestQueue().getCache().clear();
      AppController.getInstance().getRequestQueue().cancelAll(volleyMultipartRequest);
      AppController.getInstance().addToRequestQueue(volleyMultipartRequest);

Строка, которую я передаю на сервер "{\" error \ ": \" العنوان بالعربية \ "}"

Строка, котораяхранится в базе данных 'D9FH'F (' D91 (J)

Я передаю прямую строку в getParams () в данных.

Я также пытался с URL URLEncoder.encode (jsonError, "UTF-8 "), но он дает 500 Ошибка.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Спасибо за ваш ценный отзыв, но я решил его, используя URL Encoder

пример кода

private void encodeString(String input){
     try {
         return URLEncoder.encode(input, "utf-8");
      } catch (UnsupportedEncodingException e) {
         e.printStackTrace();
      }
}
0 голосов
/ 24 сентября 2018

вам нужно установить заголовок типа контента:

@Override
public Map<String, String> getHeaders()
    Map<String, String> headers = new HashMap<String, String>();
    headers.put("Content-Type", "application/json; charset=utf-8");
    return headers;
}

и / или установить тип контента для содержимого тела:

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

установка заголовка должнауже достаточно в сочетании с getParams().

...