Java REST分块编码
我正在尝试使用使用区块编码的REST服务读取一些信息Java REST分块编码,java,rest,encoding,chunked,Java,Rest,Encoding,Chunked,我正在尝试使用使用区块编码的REST服务读取一些信息 String encodedURL = URLEncoder.encode(url, "UTF-8"); WebClient client = org.apache.cxf.jaxrs.client.WebClient.create(encodedURL).accept("text/html"); Response response = client.get(); 响应包含状态、元数据和实体。元数据包含以下信息: {日期=[Thu,2011
String encodedURL = URLEncoder.encode(url, "UTF-8");
WebClient client = org.apache.cxf.jaxrs.client.WebClient.create(encodedURL).accept("text/html");
Response response = client.get();
响应包含状态、元数据和实体。元数据包含以下信息:
{日期=[Thu,2011年10月13日13:27:02 GMT],变化=[Accept Encoding,
用户代理],传输编码=[chunked],保持活动=[timeout=15,
max=100],内容类型=[text/html;charset=charset=UTF-8],
连接=[保持活动]、X-Pad=[避免浏览器错误],
服务器=[Apache/2.2.3(Linux/SUSE)]}
该实体包含类型为sun.net.www.protocol.http.HttpURLConnection$HttpInputStream的实例
我过去一直在使用以下代码行来获取整个结果字符串:
String resultString = client.get(String.class);
但不知怎的,这一行引发了一个异常:
.读取响应消息时出现问题,类:类
java.lang.String,ContentType:text/html;字符集=字符集=UTF-8。
org.apache.cxf.jaxrs.client.ClientWebApplicationException:。问题
通过读取响应消息class:class java.lang.String,
ContentType:text/html;字符集=字符集=UTF-8
。。。原因:
原因:java.io.UnsupportedEncodingException:charset=UTF-8 at
位于的sun.nio.cs.StreamDecoder.forInputStreamReader(未知源)
java.io.InputStreamReader。(未知源)位于
org.apache.cxf.helpers.IOUtils.toString(IOUtils.java:180)位于
org.apache.cxf.helpers.IOUtils.toString(IOUtils.java:166)位于
org.apache.cxf.jaxrs.provider.PrimitiveTextProvider.readFrom(PrimitiveTextProvider.java:51)
在
org.apache.cxf.jaxrs.client.AbstractClient.readBody(AbstractClient.java:435)
... 49多
是否有一个简单的解决方案来获取响应的全部内容
谢谢大家!
kon我担心服务器端发送垃圾并导致异常在客户端抛出 问题在于内容类型HTTP头信息。设置为:
text/html; charset=charset=UTF-8
正如您所看到的,charset这个词是重复的。因此,您的客户机尝试使用名为charset=UTF-8
的编码对其进行解码,这当然是不存在的
最好的解决方案是在服务器端解决问题。但我不知道你能不能在那里修好。如果没有,下一个最好的方法是在尝试获取响应内容之前尝试修复HTTP头。恐怕服务器端会发送垃圾并导致在客户端引发异常 问题在于内容类型HTTP头信息。设置为:
text/html; charset=charset=UTF-8
正如您所看到的,charset这个词是重复的。因此,您的客户机尝试使用名为charset=UTF-8
的编码对其进行解码,这当然是不存在的
最好的解决方案是在服务器端解决问题。但我不知道你能不能在那里修好。如果没有,下一个最好的方法是在尝试获取响应内容之前尝试修复HTTP头。您可以使用
@Produces("application/json; charset=UTF-8")
jax-rs服务的注释可以使用
@Produces("application/json; charset=UTF-8")
jax-rs服务的注释谢谢Codo!不知怎么的,我完全错过了。谢谢你,科多!不知怎么的,我完全错过了这个。