加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – HttpClient在成功执行方法的socketRead0上挂起

发布时间:2020-12-14 19:33:06 所属栏目:Java 来源:网络整理
导读:在我们的网络应用程序中,用户可以提交网址.我们将获取数据并解析服务器端.对于每个请求,我们使用具有以下(相关)设置的HttpClient connectionManager.getParams().setConnectionTimeout(10000);connectionManager.getParams().setSoTimeout(10000); 当我调用H
在我们的网络应用程序中,用户可以提交网址.我们将获取数据并解析服务器端.对于每个请求,我们使用具有以下(相关)设置的HttpClient
connectionManager.getParams().setConnectionTimeout(10000);
connectionManager.getParams().setSoTimeout(10000);

当我调用HttpMethod.getResponseBody时,状态代码已被检查为可接受.此时线程与此堆栈跟踪挂起:

java.net.SocketInputStream.socketRead0 ( native code )
java.net.SocketInputStream.read ( SocketInputStream.java:150 )
java.net.SocketInputStream.read ( SocketInputStream.java:121 )
java.io.BufferedInputStream.read1 ( BufferedInputStream.java:273 )
java.io.BufferedInputStream.read ( BufferedInputStream.java:334 )
java.io.FilterInputStream.read ( FilterInputStream.java:133 )
org.apache.commons.httpclient.AutoCloseInputStream.read ( AutoCloseInputStream.java:108 )
java.io.FilterInputStream.read ( FilterInputStream.java:107 )
org.apache.commons.httpclient.AutoCloseInputStream.read ( AutoCloseInputStream.java:127 )
org.apache.commons.httpclient.HttpMethodBase.getResponseBody ( HttpMethodBase.java:690 )

我无法找到发生这种情况的确切网址(这是一个在实时环境中发生的事件)而且我无法重现它.我想这只是我们所连接的服务器的一个问题,表现得很奇怪,但也许我错过了一些东西.在任何一种情况下,有没有办法让我阻止阻塞方法调用永远等待? SoTimeout也是套接字读取超时?我还缺少另一种设置吗?

解决方法

我所有的超时设置都很好,但我发现我们在url上做了http分块但没有发送结果(在chrome中运行正常,但在http客户端它甚至挂起,即使设置了超时).幸运的是,我拥有服务器,只是返回一些垃圾,它不再挂起.这似乎是一个非常独特的错误,http客户端不能很好地处理某种空的分块情况(虽然我可能会离开)….我只是知道它每次挂在同一个网址上的空数据和该网址是http chunking csv下载回我们的http客户端.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读