我通过Java发布服务并收到不支持的内容编码:text / xml错误。
我知道该服务已成功接收并处理我的帖子并尝试发回适当的响应。该服务位于另一台计算机上,会发出日志。我还将该日志发送给编写守护程序/服务的供应商,并被告知该服务符合我的请求,并且问题出在Java端。
问题似乎是设置响应的txt / xml内容类型,从错误消息判断。
错误堆栈跟踪:
org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:188)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at PkgNetAccelerator32.htsLink.createLink(htsLink.java:100)
...
Caused by: org.apache.http.HttpException: Unsupported Content-Coding: text/xml
at org.apache.http.client.protocol.ResponseContentEncoding.process(ResponseContentEncoding.java:98)
at org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:139)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:200)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
... 14 more
源代码:
String strPathLocal = "http://192.168.20.65:8080/xml/link";
HttpPost httpPost = new HttpPost(strPathLocal);
String xmlPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Whatever>...</Whatever>";
StringEntity entity = new StringEntity(xmlPost);
entity.setContentType("text/xml");
httpPost.setEntity(entity);
CloseableHttpResponse response2 = httpclient.execute(httpPost);
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
EntityUtils.consume(entity2);
response2.close();
为了便于阅读,我拿出了try-catch块和其他一些东西。
代码永远不会超过httpclient.execute()行。
我做了一些搜索,看到一张票使用“application / xml”。我试过了,但是这引起了同样的问题。
答案 0 :(得分:3)
在我看来,您的服务器正在发送标题,例如
Content-Encoding: text/xml
什么时候(可能)应该发送
Content-Type: text/xml
目前,Apache的HttpClient
可以处理gzip
,x-gzip
,deflate
和identity
类型的内容编码。对于任何其他值,它会抛出异常。
答案 1 :(得分:0)
正如您在ResponseContentEncoding
sources中看到的那样,当服务器答案包含未处理的内容编码标头时,会发生此异常。
因此,您需要调整服务器代码,以便通过适当的内容编码“提供”其答案。
答案 2 :(得分:0)
我在使用API时遇到了同样的问题,在堆栈跟踪中发出了“不支持的内容编码:application / xml ”。
根据https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers,不要认为'内容编码'根本就是一件事。但是会对服务器配置错误以提供“内容编码”或“内容类型”的信息感到乐观。