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;
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 对口计算机一分一档2019河北,最新!2019河北高考一分一档统计表公布![通俗易懂]

    对口计算机一分一档2019河北,最新!2019河北高考一分一档统计表公布![通俗易懂]免费申请学习规划请选择学习阶段学前小学初中高中大学留学其他已为25937位学员提供学习规划*验证码*短信验证码{“text1”:{“label”:”薄弱科目”,”placeholder”:”请输入你的薄弱科目”,”required”:1,”formType”:”text”,”group”:”dynamic”,”name”:”text1″,”type”:”text”,”data”:[]},”cour…

  • python encode和decode的区别_encode和decode的区别

    python encode和decode的区别_encode和decode的区别字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。e…

  • 游戏3d模型如何放到计算机中,三维建模技术在三维游戏中的应用

    游戏3d模型如何放到计算机中,三维建模技术在三维游戏中的应用张程怡摘要计算机图像技术及三维建模技术的不断发展,是三维游戏出现的重要原因之一。三维建模技术可以将现实中的物品和人在二维平面进行三维形态的模拟或再加工,达到将美术设计和计算机技术有机结合的效果,给人立体真实的感受。因此在三维游戏的制造过程中,三维建模技术得到了广泛应用。文章对三维建模技术的发展历程,三维建模技术在游戏中的运用原理进行了介绍,同时对于三维建模技术在三维游戏应用中仍存的问题及其发展…

  • Oracle中的MONTHS_BETWEEN函数

    Oracle中的MONTHS_BETWEEN函数Syntax:MONTHS_BETWEEN(date1,date2)Purpose:返回两个日期之间的月份数1.如果date1>date2,则返回一个正数;2.如果date1<date2,则返回一个负数;3.如果date1=date2,则返回一个整数0;MONTHS_BETWEENreturnsnumberofmonthsbetweendates…

  • MySQL中特别实用的几种SQL语句送给大家[通俗易懂]

    MySQL中特别实用的几种SQL语句送给大家[通俗易懂]在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑。减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮。目录实用的SQL1.插入或替换2.插入或更新3.插入或忽略4.SQL中的if-else判断语句5.指定数据快照或备份6.写入查询结果集7.强制使用指定索引心得体会:高能预警,这是一篇干货满满的MySQL技术文章,总有一天,你必然会用到,记得收藏!–来自一位被技术经理毒打多年的程序员的忠.

  • Axios跨域请求配置「建议收藏」

    Axios跨域请求配置「建议收藏」    React中用到的网络代理请求是axios,它在使用的过程中,会存在一些问题,今天就分享我遇到过的一些问题1、跨域请求后台配置:在SpringBoot项目中的,需要实现WebMvcConfigurer,并且重写addCrosMappings方法@ConfigurationpublicclassApplicationAutoConfigurationimplementsWebMvcConfigurer{ @Override public

发表回复

您的电子邮箱地址不会被公开。

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