httpclient4.X 设置代理请求(包含账号密码)
最近需要使用Httpclient做后台请求,使用的是httpclient4.3版本,apache网站上有,我这里就不提供下载链接了,搜一下就可以了,废话少说,直接上代码:
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpHost;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
- public class HttpClientTest {
- public static void main(String args[]) throws Exception {
- // 创建HttpClientBuilder
- HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
- // HttpClient
- CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
- // 依次是目标请求地址,端口号,协议类型
- HttpHost target = new HttpHost("10.10.100.102:8080/mytest", 8080,
- "http");
- // 依次是代理地址,代理端口号,协议类型
- HttpHost proxy = new HttpHost("yourproxy", 8080, "http");
- RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
- // 请求地址
- HttpPost httpPost = new HttpPost("http://10.10.100.102:8080/mytest");
- httpPost.setConfig(config);
- // 创建参数队列
- List<NameValuePair> formparams = new ArrayList<NameValuePair>();
- // 参数名为pid,值是2
- formparams.add(new BasicNameValuePair("pid", "2"));
- UrlEncodedFormEntity entity;
- try {
- entity = new UrlEncodedFormEntity(formparams, "UTF-8");
- httpPost.setEntity(entity);
- CloseableHttpResponse response = closeableHttpClient.execute(
- target, httpPost);
- // getEntity()
- HttpEntity httpEntity = response.getEntity();
- if (httpEntity != null) {
- // 打印响应内容
- System.out.println("response:"
- + EntityUtils.toString(httpEntity, "UTF-8"));
- }
- // 释放资源
- closeableHttpClient.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
那么,如何设置代理服务器的用户名和密码?请看如下代码:
- HttpHost proxy = new HttpHost("proxy", 8080);
- BasicScheme proxyAuth = new BasicScheme();
- // Make client believe the challenge came form a proxy
- proxyAuth.processChallenge(new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=default"));
- BasicAuthCache authCache = new BasicAuthCache();
- authCache.put(proxy, proxyAuth);
- CredentialsProvider credsProvider = new BasicCredentialsProvider();
- credsProvider.setCredentials(
- new AuthScope(proxy),
- new UsernamePasswordCredentials("username", "password"));
- HttpClientContext context = HttpClientContext.create();
- context.setAuthCache(authCache);
- context.setCredentialsProvider(credsProvider);
- CloseableHttpClient httpclient = HttpClients.createDefault();
- try {
- CloseableHttpResponse response = httpclient.execute(new HttpGet("/stuff"), context);
- try {
- // ...
- } finally {
- response.close();
- }
- } finally {
- httpclient.close();
- }
HttpHost proxy = new HttpHost("proxy", 8080);BasicScheme proxyAuth = new BasicScheme();
// Make client believe the challenge came form a proxy
proxyAuth.processChallenge(new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=default"));
BasicAuthCache authCache = new BasicAuthCache();
authCache.put(proxy, proxyAuth);CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope(proxy),new UsernamePasswordCredentials("username", "password"));HttpClientContext context = HttpClientContext.create();
context.setAuthCache(authCache);
context.setCredentialsProvider(credsProvider);CloseableHttpClient httpclient = HttpClients.createDefault();
try {CloseableHttpResponse response = httpclient.execute(new HttpGet("/stuff"), context);try {// ...} finally {response.close();}
} finally {httpclient.close();
}
使用代理需要导入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。在连接代理时需要使用用户名和密码构造UsernamePasswordCredentials对象并作为参数传递给HttpClient对象。
具体用法如下:
- public static void main(String args[])
- {
- StringBuffer sb = new StringBuffer();
- //创建HttpClient实例
- HttpClient client = getHttpClient();
- //创建httpGet
- HttpGet httpGet = new HttpGet("http://www.csdn.net");
- //执行
- try {
- HttpResponse response = client.execute(httpGet);
- HttpEntity entry = response.getEntity();
- if(entry != null)
- {
- InputStreamReader is = new InputStreamReader(entry.getContent());
- BufferedReader br = new BufferedReader(is);
- String str = null;
- while((str = br.readLine()) != null)
- {
- sb.append(str.trim());
- }
- br.close();
- }
- } catch (ClientProtocolException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(sb.toString());
- }
- //设置代理
- public static HttpClient getHttpClient() {
- DefaultHttpClient httpClient = new DefaultHttpClient();
- String proxyHost = "proxycn2.huawei.com";
- int proxyPort = 8080;
- String userName = "china\\******";
- String password = "*******“
- httpClient.getCredentialsProvider().setCredentials(
- new AuthScope(proxyHost, proxyPort),
- new UsernamePasswordCredentials(userName, password));
- HttpHost proxy = new HttpHost(proxyHost,proxyPort);
- httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
- return httpClient;
- }
public static void main(String args[])
{StringBuffer sb = new StringBuffer();//创建HttpClient实例HttpClient client = getHttpClient();//创建httpGetHttpGet httpGet = new HttpGet("http://www.csdn.net");//执行try {HttpResponse response = client.execute(httpGet);HttpEntity entry = response.getEntity();if(entry != null){InputStreamReader is = new InputStreamReader(entry.getContent());BufferedReader br = new BufferedReader(is);String str = null;while((str = br.readLine()) != null){sb.append(str.trim());}br.close();}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(sb.toString());
}
//设置代理
public static HttpClient getHttpClient() {DefaultHttpClient httpClient = new DefaultHttpClient();String proxyHost = "proxycn2.huawei.com";int proxyPort = 8080;String userName = "china\\******";String password = "*******“httpClient.getCredentialsProvider().setCredentials(new AuthScope(proxyHost, proxyPort),new UsernamePasswordCredentials(userName, password));HttpHost proxy = new HttpHost(proxyHost,proxyPort);httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);return httpClient;
}
httpclient4.X 设置代理请求(包含账号密码)相关推荐
- 人人网登录请求使用账号密码发起login
人人网登录请求使用账号密码发起login,并进行状态保持,请求其他页面: import json from urllibfz_all import post,get from urllib impor ...
- MySQL表的key怎么设置为yes_MySQL 修改账号密码方法
彻底忘记密码 首先修改配置文件,在[mysqld]部分加上一句:skip-grant-tables ,加上此参数的目的是跳过权限验证.然后重启数据库,数据库再次启动后,我们就可以不用密码直接登录数据库 ...
- 设置华为交换机使用账号密码方式进行SSH登录
1.创建rsa本地密钥对与创建账号 [Huawei]rsa local-key-pair create The key name will be: Huawei_Host The range of p ...
- Linux下在shell中使用curl模拟get,post请求访问接口并设置代理
在服用端做测试或查找问题的时候,难免要测试接口,测试接口最简单的方法就是利用shell的curl命令来模板get,post请求,每次都用,但是有些参数时间一长就记不清楚了,所以记录一下以备忘 curl ...
- java中各种使用设置代理的方法
1.http代理 package main.java.com.example; import org.apache.http.HttpHost; import org.apache.http.clie ...
- Eclipse中使用git前账号密码等的配置问题
在Eclipse中使用git,为了方便,需要提前进行一定的设置. 1.账号密码的设置 在菜单中选择 Windows–>Preferences,在弹出的对话框中设置账号密码. key: name ...
- Mongodb账号密码模式的基本认证
背景: 原先使用的MongoDB并没有使用账号密码的认证方式去登陆,使用的是非认证方式:现需要将其配置为以账号密码的方式去登陆和使用,配置步骤如下: 一.配置普通权限用户 1.使用MongoBoost ...
- [C++] 获取IE代理服务器的账号密码
很多程序需要使用'浏览器设置'的代理服务器,IE设置的代理服务器有可能是需要账号密码的.怎样编程获取浏览器设置的代理服务器的账号密码呢? InternetQueryOption(NULL, INTER ...
- HttpClient4.5.6设置代理以及代理验证(用户名和密码)
https://blog.csdn.net/manong_123/article/details/82531004 HttpClient4.5.6设置代理以及代理验证(用户名和密码) 下载 httpc ...
- C# selenium设置具有账号密码的代理IP
通常,我们给selenium设置代理的方式很简单,网上也有很多示例. 但是我们如何给selenium设置有账号密码验证的代理呢,在Selenium的SDK中并没有这个入口,也没有集成这几个参数. 于是 ...
最新文章
- dropdownlist绑定的二种方法
- SQL取出每个产品的Top n 条记录
- 搭建一个Struts2工程
- ASP.NET基础代码备忘
- Scrapy定向爬虫教程(二)——提取网页内容
- 【渝粤教育】国家开放大学2018年春季 0703-21T经济学基础 参考试题
- 数据结构单链表SingleLinkedList,Java实现单链表增删改查
- MySql 时间戳存char还是存int?
- 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)
- Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计
- SQL Server触发器更新原理
- SparkCore-CacheAndCheckpoint-6
- CentOS 7完全卸载MySQL
- 2019泰迪杯C题案例分析-python大数据自动化数据挖掘
- Servlet容器与Web容器详解
- 详谈软件工程之软件开发方法
- java人民币大写_JAVA 数字转人民币大写
- 记一次Python爬取某网站公众号二维码的过程
- 通过Matplotlib画sin(x)
- ForkJoinPool入门篇