JAVA常用的代理设置

由于公司上网实行代理机制, 
而最近一段时间又在研究Web上的OpenApi。 
没办法一定要使用代理,我之前有文章介绍了httpclient的代理使用方式, 
这里介绍基本java的代理使用方式。 
最常使用的全局配置代理。

Java代码  

  1. Properties prop = System.getProperties();
  2. // HTTP代理的IP设置
  3. prop.setProperty("http.proxyHost", "10.28.0.254");
  4. // HTTP代理的端口设置
  5. prop.setProperty("http.proxyPort", "80");
  6. //这里也可以设置不需要使用代理的地址
  7. prop.setProperty("http.nonProxyHosts", "localhost|10.28.0.*");
  8. //设置HTTPS安全访问的代理服务器地址与端口
  9. prop.setProperty("https.proxyHost", "10.28.0.254");
  10. prop.setProperty("https.proxyPort", "443");
  11. //对于安全访问的过滤地址属性同样是http.nonProxyHosts并没有https.nonProxyHosts
  12. //FTP的代理设置入下
  13. prop.setProperty("ftp.proxyHost", "192.168.0.254");
  14. prop.setProperty("ftp.proxyPort", "2121");
  15. prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
  16. //SOCKS的代理设置
  17. prop.setProperty("socksProxyHost", "192.168.0.254");
  18. prop.setProperty("socksProxyPort", "8000");

有时代理需要进行身份验证 此时我们需要自己定义一个继承类Authenticator的类

Java代码  

  1. public class MyAuthenticator extends Authenticator {
  2. private String username = "";
  3. private String password = "";
  4. public MyAuthenticator(String username, String password) {
  5. this.username = username;
  6. this.password = password;
  7. }
  8. protected PasswordAuthentication getPasswordAuthentication() {
  9. returnnew PasswordAuthentication(username, password.toCharArray());
  10. }
  11. }
  12. //设置登陆到代理服务器的用户名和密码
  13. Authenticator.setDefault(new MyAuthenticator("userName", "Password"));

当然此种方法可以满足大部分的需求 但是有一定的局限行, 
就是所有的连接通过统一属性进行代理配置的,不能对特定连接进行代理配置。

JDK5及其之后版本引入新的代理配置,可以满足对特定连接进行配置

Java代码  

    1. URL url = new URL("http://www.shanhe114.com");
    2. //创建代理服务器
    3. InetSocketAddress addr = new InetSocketAddress("10.28.0.4",
    4. 8080);
    5. //Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); //SOCKS代理
    6. Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); //HTTP代理
    7. //其他方式可以见Proxy.Type属性
    8. URLConnection conn = url.openConnection(proxy);
    9. InputStream in = conn.getInputStream();
    10. //InputStream in = url.openStream();
    11. String content = IOUtils.toString(in);
    12. System.out.println(content);
时间: 2024-10-29 00:35:29

JAVA常用的代理设置的相关文章

Java网络代理设置笔记

有时候使用Java需要设置代理,那么如何实现呢? 使用System.setProperty(...) http.proxyHost (default: <none>) http.proxyPort (default: 80 if http.proxyHost specified) 使用jvmargs # 在启动时指定相应的property java -Dhttp.proxyHost=your_proxy_host -Dhttp.proxyPort=proxy_port_number ... #

常用开发工具的代理设置

在进行代理设置前,首先你得有代理服务器.如果没有,可参见我前一篇文章<使用傻瓜包goagent翻墙>. 下面,我假定我的代理服务器的IP为192.168.137.1(局域网里面用)或127.0.0.1(本机中使用),端口为8087,来讲解一下关于一些工具的代理设置方法,包括: android sdk manager, android studio, svn, git, gradle, curl, repo, wget. 1.Android SDK Manager的代理设置 打开Tools菜单,

Java如何查找系统的代理设置?

在Java编程中,如何查找系统的代理设置? 以下示例显示如何使用HttpURLConnection类的systemSetting()方法和getResponse()方法的put方法在系统上查找代理设置并创建代理连接. package com.yiibai; import java.net.HttpURLConnection; import java.net.URL; import java.util.Properties; import java.net.InetSocketAddress; i

java常用英文解释

java常用名词解释: OO: object-oriented ,面向对象 OOP:object-oriented programming,面向对象编程 Author:JCC Object:对象JDK:Java development kit, java开发工具包 JVM:javavirtual machine ,java虚拟机 Compile:编绎 Run:运行Class:类 System:系统 out:输出 print:打印 line:行 variable:变量 type:类型 get:得到

java 常用工具

System:类中的属性方法都是静态的.无法实例化 err:"标准"错误输出流 in:"标准"输入流 out:"标准"输出流 常见方法: long currentTimeMillis();获取当前时间的毫秒值 Properties    getProperties(); 获取系统属性 Properties集合中存储的都是String类型的键和值. Runtime:没有构造方法摘要,说明该类不可以创建对象. 方法又是非静态,说明该类提供静态返回该类

代理模式 &amp; Java原生动态代理技术 &amp; CGLib动态代理技术

第一部分.代理模式  代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务.(其实就是在代理类中关联一个委托类的实例,然后在代理类中进行包装). UML图如下: 第二部分.在Java中实现代理模式  按照代理的创建时期,代理类可以分

Java设计模式:代理模式(一)

问题的提出 现在生活中,常常在微信朋友圈里面看到代购的信息,你想在国外买什么,香港买什么,但是又懒得自己过去,于是常常委托别人帮忙买奶粉买那啥的.这类问题的缘由是因为客户和原产地没有直接的接触,所以需要一个代理(代购)的第三者来实现间接引用.代理对象可以在客户端和目标对象间起到中介作用,而且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务.代理模式是一种很好实现客户对象与代理对象分离的策略.其抽象UML图如下图 代理模式包含如下角色 ISubject:抽象主题角色,是一个接

CentOS7.2 安装Squid3.5及正、反向代理设置

Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟.目前使用Squid的用户也是十分广泛的.Squid与Linux下其它的代理软件如Apache.Socks.TISFWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议.       Squid之所以用的很多,是因为它的缓存功能,Squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O. 从经济角度考虑,它是很多网站架构中不可或缺的角色.  

Java常用jar包用途

Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM字节码库 3 ASM asm-util-2.2.3.jar Java字节码操纵和分析框架 4 COMMONS commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期管理的常用方法. 5 COMMONS commons-beanuti