我使用 Hibernate 和 GSON 在 Java 中将数据作为对象检索,并通过 POJO 中的 GSON 创建一个 .toString
方法来生成 JSON 字符串。现在我需要使用此 JSON 作为请求正文来向 Web 服务发送 POST 请求。
问题是,如果 JSON 包含任何中文字符,它将无法工作。它提示中文姓名字段不正确。我检查了一下,中文字符串中没有空格,而其中的 .length()
正是字符数。
我还尝试复制整个 JSON 并将其粘贴到 Postman 以发出 POST 请求。它会起作用的。为什么它在我的 Java 代码中不起作用,但在 Postman 中却起作用?下面是我如何创建 POST 请求。
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(CONNECTION_TIMEOUT)
.setConnectTimeout(CONNECTION_TIMEOUT)
.setSocketTimeout(CONNECTION_TIMEOUT)
.build();
CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
StringBuilder entity = new StringBuilder();
entity.append(myJsonFromPojo);
HttpPost post = new HttpPost(uri);
post.addHeader("content-type", "application/json");
post.addHeader("Content-Type", "charset=UTF-8");
post.addHeader("Accept", "*/*");
post.addHeader("Accept-Encoding", "gzip,deflate");
post.addHeader("Authorization", "Bearer " + token);
post.setEntity(new StringEntity(entity.toString()));
response = httpClient.execute(post);
最佳答案
设法使用下面的方法来解决我的问题。 post.addHeader("Content-type", "application/json; charset=UTF-8"); post.addHeader("Accept", "application/json");
关于java - Java中POST请求体不能包含中文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59301720/