httpclient4.X 设置代理请求(包含账号密码)[通俗易懂]

httpclient4.X 设置代理请求(包含账号密码)[通俗易懂]最近需要使用Httpclient做后台请求,使用的是httpclient4.3版本,apache网站上有,我这里就不提供下载链接了,搜一下就可以了,废话少说,直接上代码:Java代码  import java.util.ArrayList;  import java.util.List;    import org.apache.http.HttpEntit

大家好,又见面了,我是你们的朋友全栈君。        最近需要使用Httpclient做后台请求,使用的是httpclient4.3版本,apache网站上有,我这里就不提供下载链接了,搜一下就可以了,废话少说,直接上代码:

Java代码  
收藏代码

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

 

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

  1. HttpHost proxy = new HttpHost(“proxy”, 8080);  
  2.   
  3. BasicScheme proxyAuth = new BasicScheme();  
  4. // Make client believe the challenge came form a proxy  
  5. proxyAuth.processChallenge(new BasicHeader(AUTH.PROXY_AUTH, “BASIC realm=default”));  
  6. BasicAuthCache authCache = new BasicAuthCache();  
  7. authCache.put(proxy, proxyAuth);  
  8.   
  9. CredentialsProvider credsProvider = new BasicCredentialsProvider();  
  10. credsProvider.setCredentials(  
  11.         new AuthScope(proxy),  
  12.         new UsernamePasswordCredentials(“username”, “password”));  
  13.   
  14. HttpClientContext context = HttpClientContext.create();  
  15. context.setAuthCache(authCache);  
  16. context.setCredentialsProvider(credsProvider);  
  17.   
  18. CloseableHttpClient httpclient = HttpClients.createDefault();  
  19. try {  
  20.     CloseableHttpResponse response = httpclient.execute(new HttpGet(“/stuff”), context);  
  21.     try {  
  22.         // …  
  23.     } finally {  
  24.         response.close();  
  25.     }  
  26. } finally {  
  27.     httpclient.close();  
  28. }  
httpclient4.X 设置代理请求(包含账号密码)[通俗易懂]
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对象。

 

具体用法如下:

  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.     
  12.   HttpEntity entry = response.getEntity();  
  13.     
  14.   if(entry != null)  
  15.   {  
  16.    InputStreamReader is = new InputStreamReader(entry.getContent());  
  17.    BufferedReader br = new BufferedReader(is);  
  18.    String str = null;  
  19.    while((str = br.readLine()) != null)  
  20.    {  
  21.     sb.append(str.trim());  
  22.    }  
  23.    br.close();  
  24.   }  
  25.     
  26.  } catch (ClientProtocolException e) {  
  27.   // TODO Auto-generated catch block  
  28.   e.printStackTrace();  
  29.  } catch (IOException e) {  
  30.   // TODO Auto-generated catch block  
  31.   e.printStackTrace();  
  32.  }  
  33.  System.out.println(sb.toString());  
  34. }  
  35. //设置代理  
  36. public static HttpClient getHttpClient() {  
  37.  DefaultHttpClient httpClient = new DefaultHttpClient();  
  38.  String proxyHost = “proxycn2.huawei.com”;  
  39.  int proxyPort = 8080;  
  40.  String userName = “china\\******”;  
  41.  String password = “*******“  
  42.  httpClient.getCredentialsProvider().setCredentials(  
  43.    new AuthScope(proxyHost, proxyPort),  
  44.    new UsernamePasswordCredentials(userName, password));  
  45.  HttpHost proxy = new HttpHost(proxyHost,proxyPort);  
  46.  httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);  
  47.  return httpClient;  
  48. }  
httpclient4.X 设置代理请求(包含账号密码)[通俗易懂]
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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163251.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JSoup模拟登录新版正方教务系统(内网-教务系统)爬取信息过程详解[通俗易懂]

    JSoup模拟登录新版正方教务系统(内网-教务系统)爬取信息过程详解[通俗易懂]利用JSoup模拟登录校园内网和新版正方教务系统,然后爬取成绩和课表等信息,并展示在APP上。

    2022年6月17日
  • BeanUtils如何优雅的拷贝List[通俗易懂]

    BeanUtils如何优雅的拷贝List[通俗易懂]前言BeanUtils.copyProperties();确实为我们做了很多事情,虽然不能完美完成深拷贝,但是对于po、vo、dto的拷贝已经足够用了。但是其还是有一些不够完美的地方不足:不能拷贝list,而拷贝list的情况又大量存在,因此会有许多重复代码 for(Ssource:sources){Ttarget=newT();…

    2022年9月12日
  • 单片机应用基础知识_51单片机基础知识总结

    单片机应用基础知识_51单片机基础知识总结单片机——硬件基础知识宗旨:技术的学习是有限的,分享的精神是无限的。1、单片机内部资源STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源(1)Flash(硬盘)——程序存储空间——擦写10万次,断电数据不丢失,读写速度慢(2)RAM(内存)——数据存储空间——断电数据丢失

    2022年9月7日
  • webpack devtools_webpack loader和plugin的区别

    webpack devtools_webpack loader和plugin的区别前言devtool也是之前常用的一个配置,我们稍微了解下吧,不研究太深,毕竟现在都不怎配置他。内容devtool是配置sourceMap的。sourceMap大家都知道,我们本地或者测试环境出了错误,可以在source中迅速定位错误,用到的就是.map(map文件),这个文件中是源文件映射(主要是源文件代码)。但是我们在network中看不到.map文件的请求,盲猜一波是浏览器做了屏蔽,不让我们看这种请求。(毕竟是源码,我单独下载map文件是可以下载下来的)接下来,当devtool被配置为

    2022年10月6日
  • 4k视频传输带宽_数字视频信号传输器

    4k视频传输带宽_数字视频信号传输器高清显示日渐普及,从720p,1080p,再到4K,8K分辨率,日常生活和商业应用中对视频清晰度要求越来越高,到目前4K基本普及。要实现4K视频的显示,大家可能会说,要买一台高清的投影仪,要一台高清的电视,要高清的显示屏,但是传输这块的媒介也不可忽视,作为连接视频源与显示设备的介质,它影响着信号是否稳定,画面是否流畅,视频是否清晰等多方面问题。下面我们来看看市面上主要的几种高清视频传输方案以及…

    2022年9月28日
  • 在c语言里0和1表示什么_’0’是什么意思c语言

    在c语言里0和1表示什么_’0’是什么意思c语言C语言中常见~Number,怎么计算?计算一个数字的~number比如说现在有A=60那么A的8位二进制数就是00111100那首先要计算~A即~60,那么先取反即11000011。因为负数的补码是取反+1。所以此处逆向操作需要-1取反即11000011-1==11000010(第一步逆向操作)11000010=>取反=>00111101=>十进制的61最后结果A==60,~A=-61C

    2022年9月20日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号