Java Apache HTTP错误:在块末接收到CRLF

时间:2019-09-20 10:46:04

标签: java mule

使用HTTP Apache客户端将XML响应作为字符串读取时,我收到以下异常:

org.apache.http.MalformedChunkCodingException: CRLF expected at end of chunk

这是在我的代码中读取从REST API检索的XML:

{WebTarget target = this.client.target(new URI(loginUrl));
Response response = target.request(MediaType.APPLICATION_XML).post(Entity.entity(xmlString, MediaType.APPLICATION_XML));
logger.info("Response -> "+response);
String responseXML = response.readEntity(String.class);}

此响应由服务器随机触发。

HTTP Request 
POST http://{serverName}:{port}/auth/2.8/signin

HTTP Response
An Apache HTTP Response Pojo Object

1 个答案:

答案 0 :(得分:1)

  

请帮助识别并解决此问题。

您的问题中没有足够的信息来做到这一点。

客户端库抱怨响应不正确;即它违反了HTTP规范。它所讨论的规范的特定部分是Section 4.1 - Chunked Transfer Coding

一种可能的解释是您尝试使用的Web服务器实现不正确。如果您使用的服务器被某些误导的人试图使用套接字从头开始实施,则可能会发生这种情况……而不是使用现有Web容器或http协议库的明智方法。

第二种可能的解释是正在干扰正在运行的TCP / HTTP数据。例如,当通过MS代理与Web服务器通信时,这显然曾经在某些较旧版本的Android Emulator中发生;参见https://issuetracker.google.com/issues/36919648

如何对此进行调查?好吧,我建议以下几点:

  1. 阅读HTTP规范的相关部分,以便您了解要查找的内容。

  2. 使用诸如Wireshark之​​类的数据包监视工具来捕获这些故障之一的原始流量。

  3. 仔细检查捕获的数据包以发现丢失的CRLF

  4. 计算出数据包的来源,然后返回源以查看产生问题的位置。

此外,请仔细阅读其他一些“ CRLF预期在块末”与您的情况相关的问题。