为 httpclient 设置代理 设置http头

在学校园网,要代理才可上网。写程序获取网上资源时,怎么办呢?同样可以为程序设置代理。我用HttpClient的3.1版本。有些网站要浏览器才可以访问,但程序可以仿浏览器,主要是设置http头。

在HostConfiguration.setProxy里设置。如下面代码:

 
  1. package com.chenlb;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;  
  8. import org.apache.commons.httpclient.Header;  
  9. import org.apache.commons.httpclient.HttpClient;  
  10. import org.apache.commons.httpclient.HttpException;  
  11. import org.apache.commons.httpclient.HttpStatus;  
  12. import org.apache.commons.httpclient.UsernamePasswordCredentials;  
  13. import org.apache.commons.httpclient.auth.AuthScope;  
  14. import org.apache.commons.httpclient.methods.GetMethod;  
  15. import org.apache.commons.httpclient.params.HttpMethodParams;  
  16.   
  17. public class HttpClientUse {  
  18.   
  19.     public static void main(String[] args) throws HttpException, IOException {  
  20.         HttpClient httpClient = new HttpClient();  
  21.   
  22.         httpClient.getHostConfiguration().setProxy("localhost"808);  
  23.   
  24.         /*//需要验证 
  25.         UsernamePasswordCredentials creds = new UsernamePasswordCredentials("chenlb", "123456"); 
  26.  
  27.         httpClient.getState().setProxyCredentials(AuthScope.ANY, creds); 
  28.         */  
  29.   
  30.         //设置http头  
  31.         List<Header> headers = new ArrayList<Header>();  
  32.         headers.add(new Header("User-Agent""Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"));  
  33.         httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers);  
  34.   
  35.         GetMethod method = new GetMethod("http://www.baidu.com");  
  36.         method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,  
  37.                 new DefaultHttpMethodRetryHandler(3false));  
  38.         try {  
  39.             int statusCode = httpClient.executeMethod(method);  
  40.   
  41.             if (statusCode != HttpStatus.SC_OK) {  
  42.                 System.out.println("Method failed code="+statusCode+": " + method.getStatusLine());  
  43.   
  44.             } else {  
  45.                 System.out.println(new String(method.getResponseBody(), "gb2312"));  
  46.             }  
  47.         } finally {  
  48.             method.releaseConnection();  
  49.         }  
  50.     }  
  51. }  

如果要用户名与密码验证的,请把/* */注释去掉。使验证有效。

验证,关键是:

 
  1. UsernamePasswordCredentials creds = new UsernamePasswordCredentials("chenlb""123456");  
  2.   
  3. httpClient.getState().setProxyCredentials(AuthScope.ANY, creds);  

设置http请求头.

 
  1. List<Header> headers = new ArrayList<Header>();  
  2. headers.add(new Header("User-Agent""Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"));  
  3. httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers);  

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自www.cnblogs.com/skinchqqhah/p/10350277.html