關於Java.net.URL對象使用Proxy訪問Internet資源
最近在做項目的過程中遇到了以下的問題,在跑下面這段代碼的時候:
- url.openConnection().getInputStream();
跑出了一個連接超時的異常,經過詳細的檢查,發現問題是因爲我在局域網
訪問Internet的資源的時候是通過代理服務器上網的,因此按照這個思路我修改了一下代碼果然連接到了外網資源。
- url.openConnection(proxy).getInputStream();
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.InetAddress;
- import java.net.InetSocketAddress;
- import java.net.MalformedURLException;
- import java.net.Proxy;
- import java.net.URL;
- /*本類用於測試Java URL對象通過代理訪問網絡資源*/
- public class Urlconnection {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String urlString="http://baidu.com";
- String proxyIp="172.20.230.5"; //代理Ip地址
- int Port=3128; //代理提供的開放端口
- try {
- /*構造Proxy對象,以適用於代理上網的方式*/
- InetSocketAddress socketAddress=new InetSocketAddress(
- InetAddress.getByName(proxyIp),Port);
- Proxy proxy=new Proxy(Proxy.Type.HTTP,socketAddress);
- /*構造url對象*/
- URL url= new URL(urlString);
- /*測試是否能夠打開連接,獲得輸入流,連接方式是直連方式*/
- // InputStream inputStream=url.openConnection().getInputStream();
- /*下面用代理的方式進行連接,需要構造Proxy對象*/
- InputStream input=url.openConnection(proxy).getInputStream();
- if(input !=null){
- System.out.println("Connectioned");
- }
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }