Jersey客户端响应字符串编码

Wiz*_*bot 5 java encoding jersey

我正在使用jersey客户端向webservice发出请求.

Client client = ClientBuilder.newClient(new ClientConfig());
Invocation.Builder builder = client.target("http://someurl.com").request();
String result = builder.get(String.class);
Run Code Online (Sandbox Code Playgroud)

然后我得到了答复

<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>some data with é è à characters</DATA>
Run Code Online (Sandbox Code Playgroud)

但在我的String结果中,响应看起来像那样

<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>some data with ? ? ? characters</DATA>
Run Code Online (Sandbox Code Playgroud)

如何判断球衣是否正确解码了网络服务响应?

小智 1

我暂时找到了解决方法

Client client = ClientBuilder.newClient(new ClientConfig());
Invocation.Builder builder = client.target("http://someurl.com").request();
Response response = builder.get();
String result = CharStreams.toString(new InputStreamReader((InputStream) response.getEntity(), Charsets.ISO_8859_1));
Run Code Online (Sandbox Code Playgroud)

CharStreams是一个 Guava 类,但还有其他方法可以将 an 转换为正确的InputStreama 。StringCharset