httpclient4.X 设置代理请求(包含账号密码)
来源:互联网 发布:37玩大闹天宫2升阶数据 编辑:程序博客网 时间:2024/05/10 07:52
最近需要使用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 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对象。
具体用法如下:
- 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账号密码链接包含@:
- 偏好设置保存账号密码
- vs中使用第三方库的方法
- mysql 查询的优化
- 3-BOM1+事件note2
- struts2配置校验(xml)
- loadrunner11使用javauser的说明文档
- httpclient4.X 设置代理请求(包含账号密码)
- 【Netflix】Netflix CEO:全世界正在接受无广告骚扰的互联网影视服务
- 开启CENTOS防火墙的端口
- 解决CocoaPods慢的小技巧
- 解决:maven项目无法引入js,css的问题
- 欢迎使用CSDN-markdown编辑器
- SiteMesh的使用
- spring version doc
- 固定行,列 分成四个区域,固定头信息,滚动头信息,固定数据信息,滚头数据信息