URL url = new URL("http://www.xxx.com/11.jpg");
 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 conn.setConnectTimeout(4000);
 conn.setRequestMethod("GET");
 InputStream is = conn.getInputStream();我的疑问是,openConnection的时候已经发送连接请求了,那么后面的setConnectTimeout和setRequestMethod应该起不了作用了啊。

解决方案 »

  1.   

    当第一构造URLConnection时,它是未连接的;即本地和远程主机无法收发数据。connect()方法在本地和远程主机之间建立一个连接。不过,getInputStream()、getContent()、getHeaderField()和其他要求先将连接打开的方法,都会在连接未打开时(自行)调用connect()。所以url.openConnection时并没有建立真正的连接
      

  2.   

    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    这步还没有做连接请求,只是初始化一些数据,比如解析URL字符串看是否合法,并根据URL生成对应的URLConnection对象