关于Java.net.URL对象使用Proxy访问Internet资源

来源:互联网 发布:剑网3女神脸数据图表 编辑:程序博客网 时间:2024/06/14 04:32

 最近在做项目的过程中遇到了以下的问题,在跑下面这段代码的时候:

 

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

 

跑出了一个连接超时的异常,经过详细的检查,发现问题是因为我在局域网

访问Internet的资源的时候是通过代理服务器上网的,因此按照这个思路我修改了一下代码果然连接到了外网资源。

 

view plain
  1. url.openConnection(proxy).getInputStream();  
与上面的相比只是多了一个构造的代理对象而已,经过测试可以连接到外网,代码如下:

 

view plain
  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";  
  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.   
  52. }  
  53.  
原创粉丝点击