首页 > 解决方案 > 使用带有多部分的 Volley Post 请求以阿拉伯语发送 Post 数据

问题描述

首先对不起我的英语不好,实际上我被困在某个点上。我想在数据库中发送阿拉伯语文本。当我通过邮递员请求发送 API 时,API 已经可以使用。但是当我用 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() 中传递直接字符串。

我也尝试使用 URLEncoder.encode(jsonError, "UTF-8") 但它给了我 500 错误。

标签: javaandroidpostandroid-volley

解决方案


您需要设置内容类型标头:

@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().


推荐阅读