程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中如何設置代理

java中如何設置代理

編輯:關於JAVA

1 前言

有時候我們的程序中要提供可以使用代理訪問網絡,代理的方式包括http、https、ftp、socks代理。比如在IE浏覽器設置代理。

那我們在我們的java程序中使用代理呢,有如下兩種方式。直接上代碼.

2 采用設置系統屬性

import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.util.Properties;
     
public class ProxyDemo1 {
    public static void main(String[] args) {
        Properties prop = System.getProperties();
        // 設置http訪問要使用的代理服務器的地址
        prop.setProperty("http.proxyHost", "183.45.78.31");
        // 設置http訪問要使用的代理服務器的端口
        prop.setProperty("http.proxyPort", "8080");
        // 設置不需要通過代理服務器訪問的主機,可以使用*通配符,多個地址用|分隔
        prop.setProperty("http.nonProxyHosts", "localhost|192.168.0.*");
        // 設置安全訪問使用的代理服務器地址與端口
        // 它沒有https.nonProxyHosts屬性,它按照http.nonProxyHosts 中設置的規則訪問
        prop.setProperty("https.proxyHost", "183.45.78.31");
        prop.setProperty("https.proxyPort", "443");
        // 使用ftp代理服務器的主機、端口以及不需要使用ftp代理服務器的主機
        prop.setProperty("ftp.proxyHost", "183.45.78.31");
        prop.setProperty("ftp.proxyPort", "21");
        prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
        // socks代理服務器的地址與端口
        prop.setProperty("socksProxyHost", "183.45.78.31");
        prop.setProperty("socksProxyPort", "1080");
        // 設置登陸到代理服務器的用戶名和密碼
        Authenticator.setDefault(new MyAuthenticator("userName", "Password"));
    }
     
    static class MyAuthenticator extends Authenticator {
        private String user = "";
        private String password = "";
     
        public MyAuthenticator(String user, String password) {
            this.user = user;
            this.password = password;
        }
     
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user, password.toCharArray());
        }
    }
     
}

3  使用Proxy

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
     
public class ProxyDemo2 {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.3lai8.com");
        // /創建代理服務器
        InetSocketAddress addr = new InetSocketAddress("192.168.0.254", 8080);
        // Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); // Socket 代理
        Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理
        Authenticator.setDefault(new MyAuthenticator("username", "password"));// 設置代理的用戶和密碼
        HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);// 設置代理訪問
        InputStreamReader in = new InputStreamReader(connection.getInputStream());
        BufferedReader reader = new BufferedReader(in);
        while (true) {
            String s = reader.readLine();
            if (s != null) {
                System.out.println(s);
            }
        }
    }
     
    static class MyAuthenticator extends Authenticator {
        private String user = "";
        private String password = "";
     
        public MyAuthenticator(String user, String password) {
            this.user = user;
            this.password = password;
        }
     
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(user, password.toCharArray());
        }
    }
     
}

4 總結

OK,就這麼的簡單,搞定,用第一種方式是一種全局的代理,用第種方式可以針對具體的哪一個使用代理。知道了這些我們就可以做我們想做的事情了哦!

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved