1

我有一个调用服务的 java 应用程序。服务调用大约需要 5-10 分钟才能完成其操作并返回状态日志作为响应。(持续时间长的原因是将文件/图像从一台服务器复制到另一台服务器)。同时,对该服务的任何其他调用都将被拒绝并返回错误响应。等待这个通常很长的回复的最佳方式是什么?

我尝试了以下请求,但没有成功:

1.HTTPUrl连接:

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(10 * 60000);
conn.setConnectTimeout(10 * 60000);
conn.connect();
try {
    conn.getInputStream();
} catch (Exception e) {
  //error handling
}

结果:大约5分钟后请求失败,错误消息表明服务已经在进行中。似乎请求在某种超时后被调用两次服务。

2.HttpClient

HttpClient client = new HttpClient ();
GetMethod method = new GetMethod(requestUrl);

try {
    int statusCode = client.executeMethod(method);
    if(statusCode == HttpStatus.SC_OK) {
        // success
    } else {
        String errorMessage = method.getResponseBodyAsString();
        //error handling
    }
}

结果:大约 5 分钟后,httpClient 失败并出现“连接重置”错误。

请注意,我能够在浏览器上运行 url 请求,并且能够获得成功的响应。我错过了什么吗?

谢谢。

4

0 回答 0