Jersey 客户端响应字符串编码
Jersey client response string encoding
我正在使用 jersey 客户端向网络服务发出请求。
Client client = ClientBuilder.newClient(new ClientConfig());
Invocation.Builder builder = client.target("http://someurl.com").request();
String result = builder.get(String.class);
然后我得到了回应
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>some data with é è à characters</DATA>
但在我的字符串结果中,响应看起来像那样
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>some data with � � � characters</DATA>
如何告诉 jersey 正确解码网络服务响应?
我暂时找到了解决方法
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));
CharStreams
是 Guava class 但还有其他方法可以将 InputStream
转换为 String
并使用 Charset
.
感谢 Wizbot,我今天遇到了完全相同的问题。
我想 post 我的 java 8 解决方案没有 Guava 依赖:
Client client = ClientBuilder.newClient(new ClientConfig());
Invocation.Builder builder = client.target("http://someurl.com").request();
Response response = builder.get();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader((InputStream) response.getEntity(), StandardCharsets.ISO_8859_1));
String result = bufferedReader.lines().collect(Collectors.joining(""));
我正在使用 jersey 客户端向网络服务发出请求。
Client client = ClientBuilder.newClient(new ClientConfig());
Invocation.Builder builder = client.target("http://someurl.com").request();
String result = builder.get(String.class);
然后我得到了回应
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>some data with é è à characters</DATA>
但在我的字符串结果中,响应看起来像那样
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>some data with � � � characters</DATA>
如何告诉 jersey 正确解码网络服务响应?
我暂时找到了解决方法
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));
CharStreams
是 Guava class 但还有其他方法可以将 InputStream
转换为 String
并使用 Charset
.
感谢 Wizbot,我今天遇到了完全相同的问题。
我想 post 我的 java 8 解决方案没有 Guava 依赖:
Client client = ClientBuilder.newClient(new ClientConfig());
Invocation.Builder builder = client.target("http://someurl.com").request();
Response response = builder.get();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader((InputStream) response.getEntity(), StandardCharsets.ISO_8859_1));
String result = bufferedReader.lines().collect(Collectors.joining(""));