我有一个调用服务的 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 请求,并且能够获得成功的响应。我错过了什么吗?
谢谢。