由于公司上网实行代理机制, 
而最近一段时间又在研究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. 2015国产犯罪传记《暴力天使》HD720P.泰语中字

    导演: 吴强编剧: 阮明玉主演: 张玉英 / 金理 / 至宝类型: 传记语言:泰语制片国家/地区: 中国大陆上映日期: 2016年3月25日片长: 92分钟又名: Huong Ga暴力天使的剧情简介 ...

  2. SimpleDateFormat非线程安全

    文章列表 1)SimpleDateFormat的线程安全问题与解决方案 2)深入理解Java:SimpleDateFormat安全的时间格式化

  3. WPF开发时光之痕日记本——终于完工了。。晒晒截图(三)(已上传安装包)

    由于是业余时间学习的 WPF 的相关开发且不怎么会使用 Blend 软件,所以开发这个客户端着实花费了我很长时间,比如文本编辑器的开发,最初是在 Simple.HtmlEditor 的基础上做的修改, ...

  4. bootstrap multiselect两大组件

    组件说明以及API 1.第一个组件——multiple-select.这个组件风格简单.文档全.功能强大.但是觉得它选中的效果不太好.关于它的效果展示,我们放在后面. 2.第二个组件——bootstr ...

  5. 每天一个linux命令(25):df 命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  6. 每天一个linux命令(14):which命令

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  7. nav ccsss

    /*header: Navigation public style*/header:before, header:after ,.navigation:before, .navigation:afte ...

  8. try throw catch异常处理机制

    /*本程序实现分块查找算法  又称索引顺序查找     需要注意的是分块查找需要2次查找  先对块查找  再对块内查找    2013.12.16    18:44*/ #include <io ...

  9. nginx + Lua 实现自定义WAF

    文章摘自:https://github.com/unixhot/waf wget git@github.com:unixhot/waf.git

  10. CSS布局自适应高度解决方法

    这是一个比较典型的三行二列布局,每列高度(事先并不能确定哪列的高度)的相同,是每个设计师追求的目标,按一般的做法,大多采用背景图填充.加JS脚本的方法使列的高度相同,本文要介绍的是采用容器溢出部分隐藏 ...