由于公司上网实行代理机制, 
而最近一段时间又在研究Web上的OpenApi。 
没办法一定要使用代理,我之前有文章介绍了httpclient的代理使用方式, 
这里介绍基本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的类

  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及其之后版本引入新的代理配置,可以满足对特定连接进行配置

    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);

JAVA HTTP请求 常用的代理设置的更多相关文章

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

    在Java编程中,如何查找系统的代理设置? 以下示例显示如何使用HttpURLConnection类的systemSetting()方法和getResponse()方法的put方法在系统上查找代理设置 ...

  2. JAVA发送http GET/POST请求的两种方式+JAVA http 请求手动配置代理

    java发送http get请求,有两种方式. 第一种用URLConnection: public static String get(String url) throws IOException { ...

  3. React网络请求跨域代理设置

    之前的之所以可以请求其他域名下的网络数据,是因为我们在服务端设置了相关配置,如下所示 如果将其注释掉,再次测试,如下所示 此时便无法跨域操作,接下来介绍下React如何实现跨域代理 (1)分析 Rea ...

  4. 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头

    目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, H ...

  5. Fiddler之常用操作(过滤器设置,代理设置,手机抓包设置,手机代理配置)

    记录下,工作中常用的一些设置和操作~ 1.过滤“脏”请求 两个下拉框的名词解释: A.内外网过滤 No Zone Filter:不分区域过滤(内网外网都显示) Show only Intranet H ...

  6. Idea代理设置与Java程序的代理设置

    最近在学习WebService的过程中,为了弄清楚发送和接收的包的数据结构,使用Fiddler抓取包的数据.开始先配置了Idea的代理设置,但执行Java代码发送请求时,依然无法在Fiddler中抓取 ...

  7. java 微信开发 常用工具类(xml传输和解析 json转换对象)

    与微信通信常用工具(xml传输和解析) package com.lownsun.wechatOauth.utl; import java.io.IOException; import java.io. ...

  8. 基于jsoup的Java服务端http(s)代理程序-代理服务器Demo

    亲爱的开发者朋友们,知道百度网址翻译么?他们为何能够翻译源网页呢,iframe可是不能跨域操作的哦,那么可以用代理实现.直接上代码: 本Demo基于MVC写的,灰常简单,copy过去,简单改改就可以用 ...

  9. ProxyHandler处理器(代理设置)

    很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问的次数多得不像正常人,它会禁止这个IP的访问. 所以我们可以设置一些代理服务器,每个一段时间换一个代理,就算IP被禁止, ...

随机推荐

  1. 基于IHttpAsyncHandler的实时大文件传送器

    在日常工作中,有时候需要到远程服务器上部署新版本的系统,由于远程服务器出于外网,所以每次都要开QQ连接,非常麻烦.索性就研究了下IHttpasyncHandler,并结合Juqery Progress ...

  2. ace布置小作业: 制作一个简单的电话号码归属地查询软件:JSON解析和Volly发送get请求

    大概就这个样子 用到JSON解析和Volly发送Get请求两个知识点 关于Volly的用法请看我的这篇: http://www.cnblogs.com/AceIsSunshineRain/p/5177 ...

  3. js学习第二篇简单语法

    字符串(String)字面量 可以使用单引号或双引号 数组(Array)字面量 定义一个数组: [40, 100, 1, 5, 25, 10] 对象(Object)字面量 定义一个对象: {first ...

  4. Linux常用指令---ps(查看进程)

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

  5. [CareerCup] 10.1 Client-facing Service 面向客户服务器

    10.1 Imagine you are building some sort of service that will be called by up to 1000 client applicat ...

  6. 20145233《Java程序设计》课程总结

    20145233 <Java程序设计>学习总结 每周学习博客汇总 20145233韩昊辰 第一周总结 20145233韩昊辰 第二周总结 20145233韩昊辰 第三周总结 2014523 ...

  7. 网页音乐突破金币(RMB)下载限制

    我平时有时间会跳跳舞 跳舞肯定要有音乐呀 于是在网上找音乐 好不容易找到了一个网站,里面有很多很全的音乐 正准备下载呢,尼玛居然要金币! 在这里解释一下,金币你可以通过回复帖子或者发帖子得到,但是数量 ...

  8. grootJs 系统常用API接受

    groot.absUrl(url) 把相对路径转换为绝对路径 groot.model 把vm对象转换为json 去掉系统生成的的属性groot.model groot.log 输出到控制台 兼容低版本 ...

  9. php中命名空间的使用

    简单使用 命名空间主要解决函数/类冲突的问题.由于PHP中中不允许函数重载,所以我们要使用的到命名空间的.先看一个简单的例子. <?php namespace A; public functio ...

  10. PHP时间日期比较

    若要使用PHP来比较日期,最好用DateTime::diff 但是这个是5.3才支持的,如果没有这样的环境,可以使用<.>来比较 如下例子,会输出right $date1=strtotim ...