这是我正在测试的场景。步骤如下
我收到错误 - 连接重置。 任何人都可以帮助我理解。
我在HttpClient中使用了以下参数
httpClient.getParams().setParameter("http.socket.timeout", new Integer(0));
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true));
彼得的评论后编辑 这就是我创建HttpClient
的方法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执行测试。如果我在调试模式下运行测试用例,我就不会得到这个例外。
答案 0 :(得分:1)
我认为这种行为是合理的,因为当服务器出现故障时,服务器上的客户端套接字也会消失。客户端仍然保留旧套接字,但此套接字已在服务器上消失。您应该从客户端重新连接。
AFAIK stale
参数允许客户端以干净的方式关闭连接(没有异常),但不能阻止断开连接。
答案 1 :(得分:0)
这看起来可疑
httpClient.getParams()。setParameter(“ http.socket.timeout”,新的Integer(0));
将超时设置为0ms可能会过早终止请求?