`
liuxinglanyue
  • 浏览: 564784 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

为 httpclient 设置代理, 设置http头

阅读更多

来自:深沉的船

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

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

 

package com.skydong;   
       
    import java.io.IOException;   
    import java.util.ArrayList;   
    import java.util.List;   
      
   import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;   
   import org.apache.commons.httpclient.Header;   
   import org.apache.commons.httpclient.HttpClient;   
   import org.apache.commons.httpclient.HttpException;   
   import org.apache.commons.httpclient.HttpStatus;   
   import org.apache.commons.httpclient.UsernamePasswordCredentials;   
   import org.apache.commons.httpclient.auth.AuthScope;   
   import org.apache.commons.httpclient.methods.GetMethod;   
   import org.apache.commons.httpclient.params.HttpMethodParams;   
      
   public class HttpClientUse {   
      
       public static void main(String[] args) throws HttpException, IOException {   
           HttpClient httpClient = new HttpClient();   
      
           httpClient.getHostConfiguration().setProxy("localhost", 808);   
      
           /*//需要验证  
           UsernamePasswordCredentials creds = new UsernamePasswordCredentials("chenlb", "123456");  
     
           httpClient.getState().setProxyCredentials(AuthScope.ANY, creds);  
           */   
     
           //设置http头   
           List<Header> headers = new ArrayList<Header>();   
           headers.add(new Header("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"));   
           httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers);   
      
           GetMethod method = new GetMethod("http://www.baidu.com");   
           method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,   
                   new DefaultHttpMethodRetryHandler(3, false));   
           try {   
               int statusCode = httpClient.executeMethod(method);   
      
               if (statusCode != HttpStatus.SC_OK) {   
                   System.out.println("Method failed code="+statusCode+": " + method.getStatusLine());   
      
               } else {   
                   System.out.println(new String(method.getResponseBody(), "gb2312"));   
               }   
           } finally {   
              method.releaseConnection();   
           }   
       }   
   }  

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


验证,关键是:

 

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

 设置http请求头.

 

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

其实可以用这种代理的方法来爬取有防爬功能的网站。

具体操作:点击这里

分享到:
评论

相关推荐

    httpclient4.3 设置代理

    javase http通讯技术 apache httpclient4.3 设置代理详解

    Android 使用HttpClient代理

    Android 使用HttpClient代理

    c# socket设置代理

    对于HTTP代理,可能需要在连接前构造一个`HttpWebRequest`对象,设置其代理属性,然后通过`HttpWebRequest.GetResponse()`获取到连接,再从连接中获取Socket。 5. **建立连接**:使用`Socket.Connect()`方法连接到...

    C#实现HTTP代理

    要设置HTTP代理,我们需要创建一个HttpClientHandler实例,并通过设置其Proxy属性来指定代理服务器的地址。 ```csharp var handler = new HttpClientHandler(); handler.Proxy = new WebProxy(...

    java httpclient设置超时时间和代理的方法

    Java HTTPClient 设置超时时间和代理的方法 Java HTTPClient 是一个功能强大且灵活的 HTTP 客户端库,提供了许多实用的功能来处理 HTTP 请求。其中,设置超时时间和代理是两个非常重要的配置项,本文将详细介绍如何...

    HTTPClient使用代理

    使用httpClient进行代理

    HttpClient4基础1--通过匿名代理访问网页

    使用HttpClient4通过匿名代理访问网页,我们需要配置`HttpHost`对象来指定代理服务器的地址和端口,并在请求中使用`RequestConfig`来应用这个代理设置。 以下是一个简单的示例代码,展示了如何配置HttpClient4来...

    HttpClient代理访问网络

    HttpClient代理访问网络

    httpcore和 httpclient

    HttpClient简化了HTTP通信的复杂性,使得开发者可以更容易地创建复杂的HTTP应用,例如进行网页抓取、Web服务调用或者实现自定义的代理设置。 在实际应用中,通常会同时使用HttpCore和HttpClient。HttpCore作为底层...

    httpclient-4.3.1.jar,httpcore-4.3.2.jar,httpmime-4.3.5.jar

    在开发过程中,可能需要配置HttpClient以适应不同的网络环境,例如设置超时、启用或禁用SSL/TLS、处理代理服务器等。此外,连接管理策略也很重要,以避免过多的开放连接导致资源浪费或被服务器拒绝。 总的来说,...

    HttpClient-4.3.6

    HttpClient是Apache基金会开发的一个开源HTTP客户端库,广泛用于Java开发者进行网络通信。版本4.3.6是HttpClient的一个稳定版本,提供了丰富的功能和优化。这个压缩包“HttpClient-4.3.6”包含了该版本的所有核心...

    httpclient

    1. **请求构造**:HttpClient允许我们创建各种类型的HTTP请求,包括GET、POST、PUT、DELETE等,可以通过设置URL、请求头、参数、实体内容等来定制请求。 2. **连接管理**:HttpClient可以管理多个HTTP连接,包括...

    httpclient4.2.1.zip

    除了基本的HTTP请求,HttpClient还支持更复杂的操作,如文件上传、下载、分块传输、自定义HTTP头、超时设置等。例如,使用HttpPost进行表单数据提交: ```java HttpPost httpPost = new HttpPost(...

    Android Httpclient Proxy Test

    本文将深入探讨如何在Android中使用HttpClient进行代理设置,并结合具体的例子来阐述相关知识点。 首先,了解`HttpClient`是Apache的一个开源库,它提供了一个强大的、功能丰富的HTTP客户端API,使得开发者可以方便...

    httpClient组合包.zip

    HttpClient还支持其他的高级特性,如自定义请求头、HTTP代理设置、超时控制、SSL/TLS安全通信等。这些特性使得HttpClient成为Java开发者进行HTTP通信的强大工具,无论是在Web服务调用、爬虫开发还是自动化测试等领域...

    HttpClient

    - **代理配置**:在某些情况下,HTTP请求可能需要通过代理服务器,HttpClient提供了灵活的代理配置选项。 - **请求撤销**:在执行过程中,用户可能需要撤销正在进行的HTTP请求。 - **连接驱逐策略和保活策略**:...

    commons-httpclient.rar

    3. **请求和响应处理**:HttpClient可以设置请求头、参数、编码方式等,并能解析HTTP响应,包括状态码、响应头和响应体内容。 4. **Cookie管理**:支持自动处理服务器返回的Cookie,方便进行会话管理。 5. **HTTP...

    httpclient官网教程中文版

    - **扩展性**:除了基本的HTTP功能外,HttpClient 还支持高级特性,比如HTTP压缩、代理服务器配置以及自定义错误处理机制等。 #### 三、请求执行 执行HTTP请求是使用HttpClient最基础的操作。在这个过程中,开发者...

    httpclient的入门实例

    - **自定义请求头**:添加自定义请求头来传递额外的信息,如用户代理、认证信息等。 - **异步请求**:HttpClient 4.5及以上版本支持异步API,允许并发处理多个请求。 在实际应用中,HttpClient可以与其他工具或框架...

    httpClient

    在实际开发中,HttpClient还支持更复杂的功能,如Cookie管理、多线程处理、HTTPS安全连接、代理设置、自动重定向和认证等。HttpClient的灵活性和强大功能使其成为Java开发者处理HTTP通信的首选工具。 总之,...

Global site tag (gtag.js) - Google Analytics