在正文中发送异常字符时的 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");