HttpClient解析数据获取丢失
目前我有个httpClient解析url的代码,大部分情况下都正常,但是偶尔会出现下面的报错org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 35499; received: 18409
这个我大概知道是因为服务端发送的是35499字节内容,但是实际客户端只接收到18409字节内容,没接收完连接就关闭了,这种情况一般是什么原因引起的,有人知道么,或者是我需要在httpClient解析的时候加上什么属性设置?我有关闭连接的操作,是否可以判断接收完成再关闭连接的设置?
主要代码如下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
老兄解决了吗?求助啊!
打个比方,服务器处理耗时需要2秒,而客户端请求超时只有1.5秒,客户端在过了1.5后没有收到服务器返回数据就会判定超时关闭此次请求连接,不过这种情况客户端会报请求超时的异常。你那种情况我也说不准,可能是服务器异常主动关闭了这个请求,比如你服务器对数据发送后是否调用了数据输出流的close方法
回复
@BoXuan : 嗯,有可能,谢谢了哈
回复
不用客气,对你有帮助就行
是有段代码设置了请求超时时间,意思是下面的5000设置的大点么,但是我好像是请求到了,数据已经在传输了,只是io太快关了而已,如果是请求超时过短,是不是应该是传输数据的过程都不会有才对?
public static HttpClient getHttpClient() {
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,HttpVersion.HTTP_1_1);
int CONNECTION_TIMEOUT=5000;
params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECTION_TIMEOUT); // 3000ms
return new DefaultHttpClient(cm, params);
}
htTpclient请求超时设置得太短??特别是用户量大的时候,服务器业务处理耗时增加