由于公司上网实行代理机制, 
而最近一段时间又在研究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. ZooKeeper学习第四期---构建ZooKeeper应用

    一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那些公共的部分.简单地说,ZooKeeper可以作为一个具有高可用性的配置存储器,允许分布式应用的参与者检索和 ...

  2. warning: LF will be replaced by CRLF

    一. Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项如下: false - 不做任何检查warn - 在提交时检查并警告t ...

  3. TPLINK GPL code 简要分析

    从TPLINK官网下载了GPL code,下载后文件名是wr841nv9_en_gpl.tar.gz, 但是无论是linux还是windows下解压都提示压缩包有问题,不过还是可以解压出完整的目录的. ...

  4. 20145215《Java程序设计》实验一实验报告

    实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package exp ...

  5. Cocopod上更新上传自己的开源框架供别人下载

    为了更方便的集成第三方框架有了cocopods 的, 当我们有了相对比较好的框架的时候如何更新到cocopods 供他人参考呢? 下面我一步一步带大家开源自己的框架. 第一步 把自己的框架更新到git ...

  6. So... what's up?

    So... testing markdown editor what to learn in May? html5 canvas api codeigniter framework var test ...

  7. Linux下高频命令分类辑录(基本使用篇)

    本文目的:总结linux下常用命令的基本使用方法 文件权限: 文档权限设置命令:chmod 数字模式: 文档权限由-rwxrwxrwx十个字符组成,其中第一个代表文档类型,后面九个字符按照顺序分为三组 ...

  8. js的各种继承

    请先看这个链接:https://segmentfault.com/a/1190000002440502 还有一个里边有js的采用临时方法的继承 http://javapolo.iteye.com/bl ...

  9. DateTime类常用技巧摘录

    //今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-).ToShortDateString ...

  10. SequoiaDB 系列之七 :源码分析之catalog节点

    这一篇紧接着上一篇SequoiaDB 系列之六 :源码分析之coord节点来讲 在上一篇中,分析了coord转发数据包到catalog节点(也有可能是data节点,视情况而定).这一次,我们继续分析上 ...