Java Commons HttpClient getResponse需要非常长的200秒

Java Commons HttpClient getResponse需要非常长的200秒,java,apache-commons-httpclient,Java,Apache Commons Httpclient,我没有改变这个方法,但突然间它花了很长时间。下面的代码示例产生此错误 编辑:我在单个java应用程序中提取了该方法,并尝试加载该文件,但超时时间相同。3号或4号。当他通过这个循环HttpMethodBase:691时,他在我的本地pc上停了500秒,线程正在休眠。睡眠后,下一行是outstream.close() 编辑:如果您想在家里试用,下面是示例代码:)(httpClient 3.1) 通过更新到HttpClient4.1(以及为此需要的一些重构)修复了它。但是如果有人知道上面例子中的原因,

我没有改变这个方法,但突然间它花了很长时间。下面的代码示例产生此错误

编辑:我在单个java应用程序中提取了该方法,并尝试加载该文件,但超时时间相同。3号或4号。当他通过这个循环HttpMethodBase:691时,他在我的本地pc上停了500秒,线程正在休眠。睡眠后,下一行是
outstream.close()

编辑:如果您想在家里试用,下面是示例代码:)(httpClient 3.1)


通过更新到HttpClient4.1(以及为此需要的一些重构)修复了它。但是如果有人知道上面例子中的原因,我会切换正确的答案

可能是服务器速度慢或网络连接不良。同一个URL在浏览器中加载快还是在curl中加载快?jeah它加载了一张facebook个人资料图片,在浏览器中显示了它的即时信息。在日志中显示图像中的所有“十六进制”数据后,显示“中断”。我现在试着激活org.apache跟踪日志,他现在正在做的就是中断。它和过去的服务器是一样的,其他对facebook的请求都是正常速度的。
while ((len = instream.read(buffer)) > 0) {
   outstream.write(buffer, 0, len);
}
import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;


public class TestLoadImage {

    /**
     * @param args
     */
    public static void main(String[] args) {
        byte[] image = loadPhotoFromUrl("https://fbcdn-sphotos-a.akamaihd.net/photos-ak-snc1/v2635/232/115/68310606562/n68310606562_2255479_948765.jpg");
        System.out.println(image.length);
    }

    private static class GetMethodIgnoringContentLength extends GetMethod {

        public GetMethodIgnoringContentLength(String uri) {
            super(uri);
        }

        @Override
        public long getResponseContentLength() {
            // ignores content-length header, fakes "not specified":
            return -1;
        }

    }
    public static byte[] loadPhotoFromUrl(String photoUrl) {
        HttpClient httpClient = new HttpClient();
        httpClient.getParams().setBooleanParameter("http.connection.stalecheck", true);
        GetMethod get = new GetMethodIgnoringContentLength(photoUrl);

        try {
            int httpStatus = httpClient.executeMethod(get);
            if (httpStatus == HttpStatus.SC_OK) {
                byte[] imageBytes = get.getResponseBody();
                if (imageBytes.length > 0) {
                    return imageBytes;
                } else {
                    System.out.println("Failed: empty response/zero data");
                }
            } else {
                System.out.println("Failed: "+ httpStatus);
            }
        } catch (IOException ioe) {
            System.out.println( ioe);
        } finally {
            get.releaseConnection();
        }

        return null;
    }
}