首先,我为我的英语不好而感到抱歉,实际上我陷入了困境。我想在数据库中发送阿拉伯文本。当我用邮递员请求发送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);
我传递给服务器“ {\“错误\”的字符串:\“العنوانبالعربية\”}“
存储在数据库'D9FH'F('D91(J)
我在数据的getParams()中传递直接字符串。
我也尝试使用URL URLEncoder.encode(jsonError,“ UTF-8”),但它给了我500错误。
答案 0 :(得分:0)
您需要设置一个内容类型标题:
@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()
设置标题已经足够了。
答案 1 :(得分:0)
感谢您提供宝贵的反馈意见,但我通过使用URL编码器解决了该问题
示例代码
private void encodeString(String input){
try {
return URLEncoder.encode(input, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
答案 2 :(得分:0)
我解决了同样的问题, 它很简单,而且有效:
1)编码字符串(在Post请求中):
margin-top
2)再次解码(从API获取数据后):
75px
注意: 编码后,数据将如下所示:
private void encode_str(String str){
try {
return URLEncoder.encode(str, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
,但是在再次解码后,它将返回。
感谢约翰