gpt4 book ai didi

java - HttpClient 中的连接重置错误

转载 作者:行者123 更新时间:2023-12-01 13:13:08 25 4
gpt4 key购买 nike

这是我正在测试的场景。步骤如下

  1. 创建 HttpClient(org.apache.commons.httpclient.HttpClient)3.1 的实例
  2. 使用实例从网址 ( http://www.example.com/submitData ) 获取响应
  3. 关闭托管第 2 步中提到的网址的服务器。
  4. 调出网址
  5. 等待网址启动
  6. 使用第 1 步中创建的 HttpClient 实例从 URL ( http://www.example.com/getData ) 获取响应

我收到错误 - 连接重置。谁能帮我理解一下。

我在 HttpClient 中使用了以下参数

    httpClient.getParams().setParameter("http.socket.timeout", new Integer(0));
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true));

根据 Peter 的评论进行编辑这就是我创建 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 执行测试。如果我在 Debug模式下运行测试用例,则不会出现此异常。

最佳答案

我认为这种行为是合理的,因为当服务器关闭时,服务器上的客户端套接字也会消失。客户端仍然保留旧套接字,但该套接字在服务器上已消失。您应该从客户端重新连接。

据我所知,stale 参数允许客户端以干净的方式关闭连接(没有异常),但不能防止断开连接。

关于java - HttpClient 中的连接重置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com