httpclient4.X 设置代理请求(包含账号密码)
来源:互联网 发布:三国乱世挂机软件 编辑:程序博客网 时间:2024/06/02 19:41
最近需要使用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 proxyproxyAuth.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;}
0 0
- httpclient4.X 设置代理请求(包含账号密码)
- httpclient4.X 设置代理请求(包含账号密码)
- httpclient4.x代理请求
- httpClient4.5.3 代理设置账号
- httpclient4.3 设置代理请求
- httpclient4.3 设置代理请求
- httpclient4.3设置代理请求
- HttpClient4.x 多线程请求
- httpClient4 设置代理
- HttpClient4.3.1如何设置代理
- HttpClient4.5.3设置代理(Proxy)访问目标地址
- HttpClient4.X的代理添加实现
- tomcat设置账号密码
- HttpClient4.3.x请求https的解决方案
- httpclient4.x处理https协议请求
- 记住账号密码 (密码账号输入框在设置的时间内有效)
- 下载FTP账号密码链接包含@:
- 偏好设置保存账号密码
- tcp五层模型中 物理层与数据链路层的区别
- P2P通信标准协议:SIP
- 算法导论第十六章贪心算法-思考题16-1找零问题
- ubuntu16.04+opencv3.1配置
- [NOIP2010冲刺十二] 奶牛排队
- httpclient4.X 设置代理请求(包含账号密码)
- onethink 新建模板的使用 注意事项
- TF-IDF与余弦相似性的应用(二):找出相似文章
- Mysql workbench 字段类型
- 简洁轻便的博客平台: Hexo详解
- js获取html的span标签的值
- 整理第三方类库(持续更新)
- 第八周项目5-计数的模式匹配
- localhost,127.0.0.1 和 本机IP 三者的区别