java - 使用带有多部分的 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 错误。
解决方案
您需要设置内容类型标头:
@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()
.
推荐阅读
- python - 使用多线程将文件存储为整数矩阵
- html - 如何解决 flexbox 的非间距问题
- r - 在多面散点图上使用 geom_blank 扩展比例
- python-2.7 - 如何为 python 2.7.9 下载 twilio 以发送文本
- rust - 如何使用参数实现 trait 默认实现
- java - 使用 Java 重新连接到进程
- static-libraries - Mingw64:添加静态链接库添加 libstdc++ 依赖项
- python - 如何最好地存储和调用在单个 XLSX 文件上运行的 pandas 脚本?
- python - python中属性装饰器对可变属性的用处
- node.js - 如何使用 Jest 库测试基本的 socket.io Node.js 应用程序?