POST 请求正文不能包含中文 Java
POST request body cannot contain chinese characters in Java
我正在使用 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");
我正在使用 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");