Java HttpClient中的连接重置错误
这是我正在测试的场景。步骤如下Java HttpClient中的连接重置错误,java,httpclient,connection-reset,Java,Httpclient,Connection Reset,这是我正在测试的场景。步骤如下 创建HttpClient(org.apache.commons.HttpClient.HttpClient)3.1的实例 使用实例从url()获取响应 关闭承载步骤2中提到的url的服务器 打开url 等待url打开 使用在步骤1中创建的HttpClient实例从url()获取响应 我得到一个错误-连接重置。 有人能帮我理解吗 我在HttpClient中使用了以下参数 httpClient.getParams().setParameter("http.so
httpClient.getParams().setParameter("http.socket.timeout", new Integer(0));
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true));
HttpClient httpClient = new HttpClient();
AuthScope authScope = new AuthScope("www.example.com", 80, AuthScope.ANY_REALM);
Credentials defaultcreds = new UsernamePasswordCredentials("username", "pwd");
httpClient.getState().setCredentials(authScope, defaultcreds);
httpClient.getParams().setParameter("http.socket.timeout", new Integer(0));
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true));
根据Peter的评论进行编辑
这就是我创建HttpClient的方式
httpClient.getParams().setParameter("http.socket.timeout", new Integer(0));
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true));
HttpClient httpClient = new HttpClient();
AuthScope authScope = new AuthScope("www.example.com", 80, AuthScope.ANY_REALM);
Credentials defaultcreds = new UsernamePasswordCredentials("username", "pwd");
httpClient.getState().setCredentials(authScope, defaultcreds);
httpClient.getParams().setParameter("http.socket.timeout", new Integer(0));
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true));
为了建立连接,我使用以下方法
GetMethod getMethod = new GetMethod("http://"+httpClient.getHostConfiguration().getHost()+"/getData");
int statusCode = httpClient.executeMethod(getMethod);
我希望httpclient实例保留主机名、端口和凭据
这正是我收到的执行消息-“连接重置”
更多信息-我正在从eclipse执行测试。如果我在调试模式下运行测试用例,我不会出现这种异常。我认为这种行为是合理的,因为当服务器关闭时,服务器上的客户端套接字也会关闭。客户端仍保留旧套接字,但此套接字已在服务器上消失。您应该从客户端重新连接 AFAIK
stale
参数允许客户端以干净的方式(毫无例外)关闭连接,但不能防止断开连接。这看起来可疑
httpClient.getParams().setParameter(“http.socket.timeout”,新整数(0))
将超时设置为0ms可能会过早终止请求?但我不希望与url保持任何连接。HttpClient发出的调用是REST调用,我只需要HttpClient对象来保存主机和端口等数据。那么,请告诉我们如何实例化HttpClient并打开连接。我修改了问题,以反映创建HttpClientInstance的步骤。您可以发布准确的异常消息吗。@petermn我有编辑问题以添加更多信息。谢谢你的帮助。