使用JerseyClientBuilder.createClient()发起http请求,返回值中的中文全是问号应该怎么办?
时间: 2024-01-22 08:21:04 浏览: 143
这是因为在发送请求时,可能没有设置正确的字符集编码。可以尝试在创建Client时,使用`Charset.forName("UTF-8")`来设置字符集编码,例如:
```java
Client client = JerseyClientBuilder.newBuilder().build();
client.register(MultiPartFeature.class);
WebTarget target = client.target(url);
Response response = target.request()
.accept(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(formData, MediaType.MULTIPART_FORM_DATA_TYPE));
String result = response.readEntity(String.class);
```
其中,`MediaType.APPLICATION_JSON_TYPE`和`MediaType.MULTIPART_FORM_DATA_TYPE`都是用于设置请求的媒体类型,具体根据你的接口要求而定。另外,`formData`是你需要发送的表单数据。
如果还是出现中文乱码问题,可以尝试在服务端添加字符集过滤器,确保服务端输出的字符集编码正确。例如,在Spring Boot项目中,可以在application.properties中添加以下配置:
```
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
```
如果以上方法都不能解决问题,可以尝试在发送请求前,将中文转换成UTF-8编码的字符,例如使用`URLEncoder.encode()`方法,然后再发送请求。
阅读全文