在正文中发送异常字符时的 Apache HttpResponse(POST 动词)
Apache HttpResponse when sending unusual characters in body (POST verb)
我得到了类似的东西:
(使用:org.apache.http.HttpResponse)
String jsondata = "{\"issuerName\": \"Sarl.\"}";
try {
httpPost.setHeader(getAuthorizationHeader(LOGIN_KEY));
StringEntity jsonparam = null;
jsonparam = new StringEntity(jsondata);
jsonparam.setChunked(true);
httpPost.addHeader("content-type", "application/json;charset=UTF-8");
httpPost.setEntity(jsonparam);
response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
// some code
在这种情况下一切都很好,有效负载 Sarl。
但是,如果我替换
String jsondata = "{\"issuerName\": \"Sarl.\"}";
来自
String jsondata = "{\"issuerName\": \"Sàrl.\"}";
序列化似乎不正确,因为远程 API 从不响应 200(它与 Postman 一起工作,具有相同的有效负载。
有人有想法吗?
您需要为 StringEntity 指定 UTF-8,即
jsonparam = new StringEntity(jsondata, "UTF-8");
您可能还需要为 UTF-8 设置 Accept-Encoding
HTTP header,即
httpPost.setHeader("Accept-Encoding", "UTF-8");
我得到了类似的东西:
(使用:org.apache.http.HttpResponse)
String jsondata = "{\"issuerName\": \"Sarl.\"}";
try {
httpPost.setHeader(getAuthorizationHeader(LOGIN_KEY));
StringEntity jsonparam = null;
jsonparam = new StringEntity(jsondata);
jsonparam.setChunked(true);
httpPost.addHeader("content-type", "application/json;charset=UTF-8");
httpPost.setEntity(jsonparam);
response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
// some code
在这种情况下一切都很好,有效负载 Sarl。 但是,如果我替换
String jsondata = "{\"issuerName\": \"Sarl.\"}";
来自
String jsondata = "{\"issuerName\": \"Sàrl.\"}";
序列化似乎不正确,因为远程 API 从不响应 200(它与 Postman 一起工作,具有相同的有效负载。
有人有想法吗?
您需要为 StringEntity 指定 UTF-8,即
jsonparam = new StringEntity(jsondata, "UTF-8");
您可能还需要为 UTF-8 设置 Accept-Encoding
HTTP header,即
httpPost.setHeader("Accept-Encoding", "UTF-8");