關於Java.net.URL對象使用Proxy訪問Internet資源

關於Java.net.URL對象使用Proxy訪問Internet資源

最近在做項目的過程中遇到了以下的問題,在跑下面這段代碼的時候:

  1. url.openConnection().getInputStream();  

跑出了一個連接超時的異常,經過詳細的檢查,發現問題是因爲我在局域網

訪問Internet的資源的時候是通過代理服務器上網的,因此按照這個思路我修改了一下代碼果然連接到了外網資源。

  1. url.openConnection(proxy).getInputStream();  
與上面的相比只是多了一個構造的代理對象而已,經過測試可以連接到外網,代碼如下:
  1. import java.io.IOException;  
  2. import java.io.InputStream;  
  3. import java.net.InetAddress;  
  4. import java.net.InetSocketAddress;  
  5. import java.net.MalformedURLException;  
  6. import java.net.Proxy;  
  7. import java.net.URL;  
  8.   
  9. /*本類用於測試Java URL對象通過代理訪問網絡資源*/  
  10. public class Urlconnection {  
  11.   
  12.     /** 
  13.      * @param args 
  14.      */  
  15.     public static void main(String[] args) {  
  16.         // TODO Auto-generated method stub  
  17.           
  18.         String urlString="http://baidu.com";       
  19.           
  20.         String proxyIp="172.20.230.5";          //代理Ip地址  
  21.           
  22.         int Port=3128;                         //代理提供的開放端口  
  23.           
  24.        try {  
  25.         /*構造Proxy對象,以適用於代理上網的方式*/  
  26.         InetSocketAddress socketAddress=new InetSocketAddress(  
  27.                 InetAddress.getByName(proxyIp),Port);  
  28.           
  29.         Proxy proxy=new Proxy(Proxy.Type.HTTP,socketAddress);  
  30.              
  31.            /*構造url對象*/  
  32.         URL url= new URL(urlString);  
  33.           
  34.         /*測試是否能夠打開連接,獲得輸入流,連接方式是直連方式*/  
  35. //      InputStream inputStream=url.openConnection().getInputStream();  
  36.           
  37.         /*下面用代理的方式進行連接,需要構造Proxy對象*/  
  38.         InputStream input=url.openConnection(proxy).getInputStream();  
  39.           
  40.         if(input !=null){  
  41.             System.out.println("Connectioned");  
  42.         }  
  43.     } catch (MalformedURLException e) {  
  44.         // TODO Auto-generated catch block  
  45.         e.printStackTrace();  
  46.     } catch (IOException e) {  
  47.         // TODO Auto-generated catch block  
  48.         e.printStackTrace();  
  49.     }  
  50.     }  
  51.   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章