最近需要使用Httpclient做后台请求,使用的是httpclient4.3版本,apache网站上有,我这里就不提供下载链接了,搜一下就可以了,废话少说,直接上代码:

Java代码  
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.HttpHost;
  5. import org.apache.http.NameValuePair;
  6. import org.apache.http.client.config.RequestConfig;
  7. import org.apache.http.client.entity.UrlEncodedFormEntity;
  8. import org.apache.http.client.methods.CloseableHttpResponse;
  9. import org.apache.http.client.methods.HttpPost;
  10. import org.apache.http.impl.client.CloseableHttpClient;
  11. import org.apache.http.impl.client.HttpClientBuilder;
  12. import org.apache.http.message.BasicNameValuePair;
  13. import org.apache.http.util.EntityUtils;
  14. public class HttpClientTest {
  15. public static void main(String args[]) throws Exception {
  16. // 创建HttpClientBuilder
  17. HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
  18. // HttpClient
  19. CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
  20. // 依次是目标请求地址,端口号,协议类型
  21. HttpHost target = new HttpHost("10.10.100.102:8080/mytest", 8080,
  22. "http");
  23. // 依次是代理地址,代理端口号,协议类型
  24. HttpHost proxy = new HttpHost("yourproxy", 8080, "http");
  25. RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
  26. // 请求地址
  27. HttpPost httpPost = new HttpPost("http://10.10.100.102:8080/mytest");
  28. httpPost.setConfig(config);
  29. // 创建参数队列
  30. List<NameValuePair> formparams = new ArrayList<NameValuePair>();
  31. // 参数名为pid,值是2
  32. formparams.add(new BasicNameValuePair("pid", "2"));
  33. UrlEncodedFormEntity entity;
  34. try {
  35. entity = new UrlEncodedFormEntity(formparams, "UTF-8");
  36. httpPost.setEntity(entity);
  37. CloseableHttpResponse response = closeableHttpClient.execute(
  38. target, httpPost);
  39. // getEntity()
  40. HttpEntity httpEntity = response.getEntity();
  41. if (httpEntity != null) {
  42. // 打印响应内容
  43. System.out.println("response:"
  44. + EntityUtils.toString(httpEntity, "UTF-8"));
  45. }
  46. // 释放资源
  47. closeableHttpClient.close();
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. }

那么,如何设置代理服务器的用户名和密码?请看如下代码:

[java] view plaincopyprint?
  1. HttpHost proxy = new HttpHost("proxy", 8080);
  2. BasicScheme proxyAuth = new BasicScheme();
  3. // Make client believe the challenge came form a proxy
  4. proxyAuth.processChallenge(new BasicHeader(AUTH.PROXY_AUTH, "BASIC realm=default"));
  5. BasicAuthCache authCache = new BasicAuthCache();
  6. authCache.put(proxy, proxyAuth);
  7. CredentialsProvider credsProvider = new BasicCredentialsProvider();
  8. credsProvider.setCredentials(
  9. new AuthScope(proxy),
  10. new UsernamePasswordCredentials("username", "password"));
  11. HttpClientContext context = HttpClientContext.create();
  12. context.setAuthCache(authCache);
  13. context.setCredentialsProvider(credsProvider);
  14. CloseableHttpClient httpclient = HttpClients.createDefault();
  15. try {
  16. CloseableHttpResponse response = httpclient.execute(new HttpGet("/stuff"), context);
  17. try {
  18. // ...
  19. } finally {
  20. response.close();
  21. }
  22. } finally {
  23. httpclient.close();
  24. }
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对象。

具体用法如下:

[java] view plaincopyprint?
  1. public static void main(String args[])
  2. {
  3. StringBuffer sb = new StringBuffer();
  4. //创建HttpClient实例
  5. HttpClient client = getHttpClient();
  6. //创建httpGet
  7. HttpGet httpGet = new HttpGet("http://www.csdn.net");
  8. //执行
  9. try {
  10. HttpResponse response = client.execute(httpGet);
  11. HttpEntity entry = response.getEntity();
  12. if(entry != null)
  13. {
  14. InputStreamReader is = new InputStreamReader(entry.getContent());
  15. BufferedReader br = new BufferedReader(is);
  16. String str = null;
  17. while((str = br.readLine()) != null)
  18. {
  19. sb.append(str.trim());
  20. }
  21. br.close();
  22. }
  23. } catch (ClientProtocolException e) {
  24. // TODO Auto-generated catch block
  25. e.printStackTrace();
  26. } catch (IOException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. }
  30. System.out.println(sb.toString());
  31. }
  32. //设置代理
  33. public static HttpClient getHttpClient() {
  34. DefaultHttpClient httpClient = new DefaultHttpClient();
  35. String proxyHost = "proxycn2.huawei.com";
  36. int proxyPort = 8080;
  37. String userName = "china\\******";
  38. String password = "*******“
  39. httpClient.getCredentialsProvider().setCredentials(
  40. new AuthScope(proxyHost, proxyPort),
  41. new UsernamePasswordCredentials(userName, password));
  42. HttpHost proxy = new HttpHost(proxyHost,proxyPort);
  43. httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
  44. return httpClient;
  45. }
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 设置代理请求(包含账号密码)相关推荐

  1. 人人网登录请求使用账号密码发起login

    人人网登录请求使用账号密码发起login,并进行状态保持,请求其他页面: import json from urllibfz_all import post,get from urllib impor ...

  2. MySQL表的key怎么设置为yes_MySQL 修改账号密码方法

    彻底忘记密码 首先修改配置文件,在[mysqld]部分加上一句:skip-grant-tables ,加上此参数的目的是跳过权限验证.然后重启数据库,数据库再次启动后,我们就可以不用密码直接登录数据库 ...

  3. 设置华为交换机使用账号密码方式进行SSH登录

    1.创建rsa本地密钥对与创建账号 [Huawei]rsa local-key-pair create The key name will be: Huawei_Host The range of p ...

  4. Linux下在shell中使用curl模拟get,post请求访问接口并设置代理

    在服用端做测试或查找问题的时候,难免要测试接口,测试接口最简单的方法就是利用shell的curl命令来模板get,post请求,每次都用,但是有些参数时间一长就记不清楚了,所以记录一下以备忘 curl ...

  5. java中各种使用设置代理的方法

    1.http代理 package main.java.com.example; import org.apache.http.HttpHost; import org.apache.http.clie ...

  6. Eclipse中使用git前账号密码等的配置问题

    在Eclipse中使用git,为了方便,需要提前进行一定的设置. 1.账号密码的设置 在菜单中选择 Windows–>Preferences,在弹出的对话框中设置账号密码. key: name ...

  7. Mongodb账号密码模式的基本认证

    背景: 原先使用的MongoDB并没有使用账号密码的认证方式去登陆,使用的是非认证方式:现需要将其配置为以账号密码的方式去登陆和使用,配置步骤如下: 一.配置普通权限用户 1.使用MongoBoost ...

  8. [C++] 获取IE代理服务器的账号密码

    很多程序需要使用'浏览器设置'的代理服务器,IE设置的代理服务器有可能是需要账号密码的.怎样编程获取浏览器设置的代理服务器的账号密码呢? InternetQueryOption(NULL, INTER ...

  9. HttpClient4.5.6设置代理以及代理验证(用户名和密码)

    https://blog.csdn.net/manong_123/article/details/82531004 HttpClient4.5.6设置代理以及代理验证(用户名和密码) 下载 httpc ...

  10. C# selenium设置具有账号密码的代理IP

    通常,我们给selenium设置代理的方式很简单,网上也有很多示例. 但是我们如何给selenium设置有账号密码验证的代理呢,在Selenium的SDK中并没有这个入口,也没有集成这几个参数. 于是 ...

最新文章

  1. dropdownlist绑定的二种方法
  2. SQL取出每个产品的Top n 条记录
  3. 搭建一个Struts2工程
  4. ASP.NET基础代码备忘
  5. Scrapy定向爬虫教程(二)——提取网页内容
  6. 【渝粤教育】国家开放大学2018年春季 0703-21T经济学基础 参考试题
  7. 数据结构单链表SingleLinkedList,Java实现单链表增删改查
  8. MySql 时间戳存char还是存int?
  9. 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)
  10. Hadoop数据分析实例:P2P借款人信用风险实时监控模型设计
  11. SQL Server触发器更新原理
  12. SparkCore-CacheAndCheckpoint-6
  13. CentOS 7完全卸载MySQL
  14. 2019泰迪杯C题案例分析-python大数据自动化数据挖掘
  15. Servlet容器与Web容器详解
  16. 详谈软件工程之软件开发方法
  17. java人民币大写_JAVA 数字转人民币大写
  18. 记一次Python爬取某网站公众号二维码的过程
  19. 通过Matplotlib画sin(x)
  20. ForkJoinPool入门篇

热门文章

  1. 变频器RS485通讯协议
  2. 查看java堆栈信息
  3. 如何判断是否是webservice接口
  4. BoundsChecker用法
  5. MyQQ:可以在终端里面上的QQ
  6. 贴片电容器容量怎么换算?
  7. mysql 查找员工入职时间
  8. mysql查询员工表中所有员工入职20个月之后的日期_新员工入职指南
  9. java打印sscil码_2018最新发布 |SSCI收录语言学学科期刊目录
  10. mysql获取当前时间+1天_mysql获取当前时间,前一天,后一天