java中使用代理访问网络的几种方法

原创 2007年09月20日 22:37:00
 http://javasky.bloghome.cn/posts/86087.html
有些时候我们的网络不能直接连接到外网, 需要使用http或是https或是socket代理来连接到外网, 这里是java使用代理连接到外网的一些方法, 希望对你的程序有用.
方法一使用系统属性来完成代理设置, 这种方法比较简单, 但是不能对单独的连接来设置代理:
    /**
     *@paramargs
     */
    /**
     *@paramargs
     */
    public static void main(String[] args) {
        Properties prop = System.getProperties();
        // 设置http访问要使用的代理服务器的地址
        prop.setProperty("http.proxyHost", "192.168.0.254");
        // 设置http访问要使用的代理服务器的端口
        prop.setProperty("http.proxyPort", "8080");
        // 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
        prop.setProperty("http.nonProxyHosts", "localhost|192.168.0.*");
        // 设置安全访问使用的代理服务器地址与端口
        // 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
        prop.setProperty("https.proxyHost", "192.168.0.254");
        prop.setProperty("https.proxyPort", "443");
        // 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
        prop.setProperty("ftp.proxyHost", "192.168.0.254");
        prop.setProperty("ftp.proxyPort", "2121");
        prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
        // socks代理服务器的地址与端口
        prop.setProperty("socksProxyHost", "192.168.0.254");
        prop.setProperty("socksProxyPort", "8000");
        // 设置登陆到代理服务器的用户名和密码
        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() {
            returnnew PasswordAuthentication(user, password.toCharArray());
        }
    }
方法二使用Proxy来对每个连接实现代理, 这种方法只能在jdk 1.5以上的版本使用(包含jdk1.5), 优点是可以单独的设置每个连接的代理, 缺点是设置比较麻烦:
    public static void main(String[] args) {
        try {
            URL url = new URL("http://www.baidu.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 代理
            // 如果我们知道代理server的名字, 可以直接使用
            // 结束
            URLConnection conn = url.openConnection(proxy);
            InputStream in = conn.getInputStream();
            // InputStream in = url.openStream();
            String s = IOUtils.toString(in);
            System.out.println(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
不是很详细, 有什么问题还望大家指正
================================
/*
 * Output:
 *  
 */

import java.io.InputStream;
import java.net.URL;

public class MainClass {

  public static void main(String args[]) {
    try {

      URL url = new URL("http://www.java2s.com");

      // Obtain output stream
      InputStream is = url.openStream();

      // Read and display data from url
      byte buffer[] new byte[1024];
      int i;
      while ((i = is.read(buffer)) != -1) {
        System.out.write(buffer, 0, i);
      }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}

java中设置网络代理

代理服务器概述许多系统通过代理服务器访问Web,有时还会访问Internet的其它非HTTP部分。代理服务器接收到本地客户端到远程服务器的请求。代理服务器向远程服务器发出请求,再将结果转发回本地客户端...
  • jijianshuai
  • jijianshuai
  • 2017年08月10日 22:58
  • 996

java使用代理访问网络的几种方法

有些时候我们的网络不能直接连接到外网, 需要使用http或是https或是socket代理来连接到外网, 这里是java使用代理连接到外网的一些方法.    方法一使用系统属性来完成代理设置, 这种方...
  • overmaker
  • overmaker
  • 2009年05月10日 22:42
  • 16188

JAVA几种代理总结

JAVA几种代理总结 一 java使用IE代理 (在这之前不能使用过http连接)首先需要设置System.setProperty("java.net.useSystemProxies","tru...
  • ggrrg999
  • ggrrg999
  • 2016年03月31日 13:16
  • 5059

Java设置代理方式

使用Java的HttpURLConnection类可以实现HttpClient的功能,而不需要依赖任何其他类库。所有有时候大家就直接使用它来完成一些简单(或复杂)的功能。但是你活在伟大的{print ...
  • u013782203
  • u013782203
  • 2016年06月30日 15:04
  • 2228

JAVA设置代理的两种方式(HTTPS和HTTP)

JAVA设置代理的两种方式(HTTPS和HTTP)
  • sbc1232123321
  • sbc1232123321
  • 2017年06月06日 10:46
  • 2750

java 设置代理ip

java设置代理IP的两种方式。第一种简便快捷,第二种可以避免代理失效时使用本地连接访问网络。...
  • zzq1992126
  • zzq1992126
  • 2016年05月17日 10:23
  • 7224

Java 中怎样在程序中设置代理服务器

在 Java 中代理服务器的基本设置是通过设置系统属性来完成的。而代理服务器的验证则是通过设置 Http 请求头来完成的。  下面的是一个简单的例子供大家参考:  // 根据地址 url 打开 Ht...
  • owen5630
  • owen5630
  • 2014年03月07日 10:24
  • 4033

开发技巧-Java通过HttpProxy实现穿越

需求描述     在正常的项目开发需求中,连接远程服务器的场景一般有二:     1  自家实现的http服务器,api接口都已经约定好;     2  开发平台服务,通常如新浪、百...
  • littleatp2008
  • littleatp2008
  • 2015年08月14日 14:23
  • 11262

java代理服务器设置

一、设置系统代理 方法如下: java -Dhttp.proxyHost=192.168.254.254  -Dhttp.proxyPort=9000  com.domain.Program 或...
  • xiaomin1991222
  • xiaomin1991222
  • 2016年03月10日 16:05
  • 2714

Java使用代理进行网络连接

需求是这样的:一、界面上要有这样几种代理类型可以选。1.HTTP代理 2.Socks代理 3.不使用代理(直连) 4.使用浏览器设置(浏览器也是HTTP、Socks、直连三种)。可参考QQ登录设...
  • u012643122
  • u012643122
  • 2016年11月04日 10:34
  • 1525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中使用代理访问网络的几种方法
举报原因:
原因补充:

(最多只允许输入30个字)