等待java中的长HTTP响应

时间:2013-07-12 09:02:26

标签: java httpclient httprequest httpurlconnection socket-timeout-exception

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

感谢。

0 个答案:

没有答案