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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 多重影分身:一套代码如何生成多个小程序?

    多重影分身:一套代码如何生成多个小程序?

    2021年7月2日
    128
  • mac上的VSCode快捷键

    mac上的VSCode快捷键Command+Shift+N打开新窗口Command+Shift+P/F1显示命令面板Command+\编辑器分屏Command+N新建文件Command+O打开文件command+,打开用户设置shift+option+F格式化代码Command+U撤销上一个光标操作Command+B显示、隐藏侧边栏Command+Shift+F显示搜索框Ctrl+Shift+G显示Git面板Command+

    2022年5月13日
    75
  • mutual information loss_munication

    mutual information loss_munication今天挺paperreading的时候,听到了最大化互信息,还不清楚互信息是个什么东东,google了一下,从http://en.wikipedia.org/wiki/Mutual_information摘过来了:    DefinitionofmutualinformationFormally,themutualinformationoftwod

    2022年9月17日
    4
  • kafka删除topic方式

    kafka删除topic方式工作中因为各种原因,topic中消息堆积的太多或者kafka所在磁盘空间满了等。可能需要彻底清理一下kafkatopic。cd/opt/kafka/kafka_2.10-0.10.2.2/bin列出所有topic:./kafka-topics.sh–zookeeperip:2181-list其实就是检查zk上节点的/brokers/topics子节点,打印出来。创建topic…

    2022年10月17日
    2
  • FastAI 课程学习笔记 lesson 1:宠物图片分类

    FastAI 课程学习笔记 lesson 1:宠物图片分类文章目录代码解析神奇的”%”导入fastAI库下载解压数据集untar_data获取帮助文档help()???doc设置路径get_image_filesImageDataBunchfrom_name_regrep命令检验正则表达式pythonre检验正则表达式代码解析神奇的”%”%reload_extautoreload%autoreload2%matplotlibinli…

    2022年9月8日
    2
  • MySQL数据库建立数据库和表(命令行方式)

    MySQL数据库建立数据库和表(命令行方式)最近在学数据库系统概论,以前建表都是直接用workbeach,但是作为一个计算机专业的学生,我觉得能敲的时候就少点,所以分享一个自己用命令创建数据库和表的过程,希望对一些人有点用!安装好数据库后,我们可以看到这些东西可以这么简单的认识,划红线的是通过命令行来操作数据库,划绿线的是操作数据库的图形化界面,这里我分享的是通过命令行来操作,以《数据库系统概论》第五版第三章为例创建一个我们平时…

    2022年7月19日
    16

发表回复

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

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