JAVA HTTP请求 常用的代理设置
由于公司上网实行代理机制,
而最近一段时间又在研究Web上的OpenApi。
没办法一定要使用代理,我之前有文章介绍了httpclient的代理使用方式,
这里介绍基本java的代理使用方式。
最常使用的全局配置代理。
- Properties prop = System.getProperties();
- // HTTP代理的IP设置
- prop.setProperty("http.proxyHost", "10.28.0.254");
- // HTTP代理的端口设置
- prop.setProperty("http.proxyPort", "80");
- //这里也可以设置不需要使用代理的地址
- prop.setProperty("http.nonProxyHosts", "localhost|10.28.0.*");
- //设置HTTPS安全访问的代理服务器地址与端口
- prop.setProperty("https.proxyHost", "10.28.0.254");
- prop.setProperty("https.proxyPort", "443");
- //对于安全访问的过滤地址属性同样是http.nonProxyHosts并没有https.nonProxyHosts
- //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的类
- public class MyAuthenticator extends Authenticator {
- private String username = "";
- private String password = "";
- public MyAuthenticator(String username, String password) {
- this.username = username;
- this.password = password;
- }
- protected PasswordAuthentication getPasswordAuthentication() {
- returnnew PasswordAuthentication(username, password.toCharArray());
- }
- }
- //设置登陆到代理服务器的用户名和密码
- Authenticator.setDefault(new MyAuthenticator("userName", "Password"));
当然此种方法可以满足大部分的需求 但是有一定的局限行,
就是所有的连接通过统一属性进行代理配置的,不能对特定连接进行代理配置。
JDK5及其之后版本引入新的代理配置,可以满足对特定连接进行配置
- URL url = new URL("http://www.shanhe114.com");
- //创建代理服务器
- InetSocketAddress addr = new InetSocketAddress("10.28.0.4",
- 8080);
- //Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); //SOCKS代理
- Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); //HTTP代理
- //其他方式可以见Proxy.Type属性
- URLConnection conn = url.openConnection(proxy);
- InputStream in = conn.getInputStream();
- //InputStream in = url.openStream();
- String content = IOUtils.toString(in);
- System.out.println(content);
JAVA HTTP请求 常用的代理设置的更多相关文章
- Java如何查找系统的代理设置?
在Java编程中,如何查找系统的代理设置? 以下示例显示如何使用HttpURLConnection类的systemSetting()方法和getResponse()方法的put方法在系统上查找代理设置 ...
- JAVA发送http GET/POST请求的两种方式+JAVA http 请求手动配置代理
java发送http get请求,有两种方式. 第一种用URLConnection: public static String get(String url) throws IOException { ...
- React网络请求跨域代理设置
之前的之所以可以请求其他域名下的网络数据,是因为我们在服务端设置了相关配置,如下所示 如果将其注释掉,再次测试,如下所示 此时便无法跨域操作,接下来介绍下React如何实现跨域代理 (1)分析 Rea ...
- 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头
目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, H ...
- Fiddler之常用操作(过滤器设置,代理设置,手机抓包设置,手机代理配置)
记录下,工作中常用的一些设置和操作~ 1.过滤“脏”请求 两个下拉框的名词解释: A.内外网过滤 No Zone Filter:不分区域过滤(内网外网都显示) Show only Intranet H ...
- Idea代理设置与Java程序的代理设置
最近在学习WebService的过程中,为了弄清楚发送和接收的包的数据结构,使用Fiddler抓取包的数据.开始先配置了Idea的代理设置,但执行Java代码发送请求时,依然无法在Fiddler中抓取 ...
- java 微信开发 常用工具类(xml传输和解析 json转换对象)
与微信通信常用工具(xml传输和解析) package com.lownsun.wechatOauth.utl; import java.io.IOException; import java.io. ...
- 基于jsoup的Java服务端http(s)代理程序-代理服务器Demo
亲爱的开发者朋友们,知道百度网址翻译么?他们为何能够翻译源网页呢,iframe可是不能跨域操作的哦,那么可以用代理实现.直接上代码: 本Demo基于MVC写的,灰常简单,copy过去,简单改改就可以用 ...
- ProxyHandler处理器(代理设置)
很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问的次数多得不像正常人,它会禁止这个IP的访问. 所以我们可以设置一些代理服务器,每个一段时间换一个代理,就算IP被禁止, ...
随机推荐
- 轻松理解JS基本包装对象
今天来讨论一下JS中的基本包装对象(也叫基本包装类型),之前刚学到这里的时候,自己也是一头雾水,不明白这个基本包装对象到底是个什么鬼,后来找了很多资料,终于看清了它的真面目.首先呢,我们现在复习一下J ...
- iOS简易柱状图(带动画)--新手入门篇
叨逼叨 好久没更新博客了,才几个月,发生了好多事情,处理了好多事情.不变的是写代码依然在继续. 做点啥子 看看objective-c的书,学着写了个柱状图,只是练习的demo而已,iOS上的图表控件已 ...
- cookie的操作
比如这样如果一个网站上有两个域名的时候,我们需要考虑,两个域名下的cookie. 我们所说的跨域只的就是lesport.com和le.com js的cookie是不能跨域的,为了防止过大. js增加删 ...
- nth-child() 选择器
给tabel tb1 td添加样式 #tb1 tr td:nth-child(2n+1) {/*奇数行样式*/ } #tb1 tr td:nth-child(2n) {/*偶数行样式*/ }
- [USACO2003][poj2110]Mountain Walking(二分答案+bfs)
http://poj.org/problem?id=2110 题意:给你一个n*n矩形(n<=100),每个位置上都有一个数字代表此处山的高度,要从(1,1)走到 (n,n),要求一条路径使得这 ...
- [wikioi2144]砝码称重2(另类的dfs)
题目描述 Description 有n个砝码,现在要称一个质量为m的物体,请问最少需要挑出几个砝码来称? 注意一个砝码最多只能挑一次 输入描述 Input Description 第一行两个整数n和m ...
- struts2动态方法
动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过, ...
- maven初学(三) SNAPSHOT
使用场景: 通常一个大型软件是由多个模块组成的,不同的组使用相同应用的不同版本. 在开发阶段,可能经常需要修复bug和优化. 这种情况下就会导致其他组频繁更新代码和pom文件 SANPSHOT SNA ...
- __name__和__main的含义
if __name__ == "__main__": main() This module represents the (otherwise anonymous) scope i ...
- UOJ35 后缀数组(模板)
#35. 后缀排序 这是一道模板题. 读入一个长度为 nn 的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置.位置编号为 1 ...