我有一个调用服务的java应用程序。服务调用大约需要5-10分钟才能完成其操作,并返回状态日志作为响应。 (持续时间很长的原因是将文件/图像从一台服务器复制到另一台服务器)。与此同时,对服务的任何其他调用都将被拒绝,并带有错误响应。等待这种通常很长的反应的最佳方式是什么?
我尝试了以下请求但没有运气:
1.HTTPUrlConnection:
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请求,并且能够获得成功的响应。我错过了什么吗?
感谢。