设置代理ip——java

 之前一直说python爬虫使用代理ip,难道代理ip只能python使用吗?其实不然,代理ip除了python可以使用还有很多,下面我们来讲一下其中一种,Java怎么设置代理ip。

1、直接在JVM中设置

   

   /*JVM设置代理*/
System.getProperties().setProperty("http.proxyHost", ip);  
System.getProperties().setProperty("http.proxyPort", "80");  


   这种设置方式它的优点在于方便且比较快,并且因为它是JVM级别,可以作用到这一整个项目当中。有利则也有弊,那就是在代理ip失效的时候,会直接调用本地ip来进行工作。这种操作在很多场景中是极为致命的。

2、使用socketaddress网络去代理

 

 /**
 * 通过代理对象连接
 * @param address
 * @return
 */
SocketAddress addr = new InetSocketAddress(host, Integer.parseInt(port)); 
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
try{
    URL url = new URL("http://www.xxx.com");
    URLConnection conn = url.openConnection(proxy);
    conn.setConnectTimeout(5000);
    conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)");
    conn.getContent();
}catch (Exception e) {
    e.printStackTrace();
}


  建立一个proxy对象,之后使用它去连接。在代理ip失效的时候,它会返回错误,这种方法的优点在于代理ip工作时出现错误,它可以及时中断这个工作而不是使用本地ip去继续工作。然它的弊端在于要为每一次连接创建一个对象,非常繁琐。

   以上就是Java设置代理ip的方法了,当然,不局限于这两种。任何方法都有利弊,我们要权衡自身需求以及用途去选择合适自己的方法。