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");