当前位置: 移动技术网 > IT编程>开发语言>Java > 分享java中设置代理的两种方式

分享java中设置代理的两种方式

2019年07月22日  | 移动技术网IT编程  | 我要评论

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,就这么的简单,搞定,用第一种方式是一种全局的代理,用第种方式可以针对具体的哪一个使用代理。知道了这些我们就可以做我们想做的事情了哦!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网