来自:深沉的船
在学校园网,要代理才可上网。写程序获取网上资源时,怎么办呢?同样可以为程序设置代理。我用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);
其实可以用这种代理的方法来爬取有防爬功能的网站。
具体操作:点击这里
分享到:
相关推荐
javase http通讯技术 apache httpclient4.3 设置代理详解
Android 使用HttpClient代理
对于HTTP代理,可能需要在连接前构造一个`HttpWebRequest`对象,设置其代理属性,然后通过`HttpWebRequest.GetResponse()`获取到连接,再从连接中获取Socket。 5. **建立连接**:使用`Socket.Connect()`方法连接到...
要设置HTTP代理,我们需要创建一个HttpClientHandler实例,并通过设置其Proxy属性来指定代理服务器的地址。 ```csharp var handler = new HttpClientHandler(); handler.Proxy = new WebProxy(...
Java HTTPClient 设置超时时间和代理的方法 Java HTTPClient 是一个功能强大且灵活的 HTTP 客户端库,提供了许多实用的功能来处理 HTTP 请求。其中,设置超时时间和代理是两个非常重要的配置项,本文将详细介绍如何...
使用httpClient进行代理
使用HttpClient4通过匿名代理访问网页,我们需要配置`HttpHost`对象来指定代理服务器的地址和端口,并在请求中使用`RequestConfig`来应用这个代理设置。 以下是一个简单的示例代码,展示了如何配置HttpClient4来...
HttpClient代理访问网络
HttpClient简化了HTTP通信的复杂性,使得开发者可以更容易地创建复杂的HTTP应用,例如进行网页抓取、Web服务调用或者实现自定义的代理设置。 在实际应用中,通常会同时使用HttpCore和HttpClient。HttpCore作为底层...
在开发过程中,可能需要配置HttpClient以适应不同的网络环境,例如设置超时、启用或禁用SSL/TLS、处理代理服务器等。此外,连接管理策略也很重要,以避免过多的开放连接导致资源浪费或被服务器拒绝。 总的来说,...
HttpClient是Apache基金会开发的一个开源HTTP客户端库,广泛用于Java开发者进行网络通信。版本4.3.6是HttpClient的一个稳定版本,提供了丰富的功能和优化。这个压缩包“HttpClient-4.3.6”包含了该版本的所有核心...
1. **请求构造**:HttpClient允许我们创建各种类型的HTTP请求,包括GET、POST、PUT、DELETE等,可以通过设置URL、请求头、参数、实体内容等来定制请求。 2. **连接管理**:HttpClient可以管理多个HTTP连接,包括...
除了基本的HTTP请求,HttpClient还支持更复杂的操作,如文件上传、下载、分块传输、自定义HTTP头、超时设置等。例如,使用HttpPost进行表单数据提交: ```java HttpPost httpPost = new HttpPost(...
本文将深入探讨如何在Android中使用HttpClient进行代理设置,并结合具体的例子来阐述相关知识点。 首先,了解`HttpClient`是Apache的一个开源库,它提供了一个强大的、功能丰富的HTTP客户端API,使得开发者可以方便...
HttpClient还支持其他的高级特性,如自定义请求头、HTTP代理设置、超时控制、SSL/TLS安全通信等。这些特性使得HttpClient成为Java开发者进行HTTP通信的强大工具,无论是在Web服务调用、爬虫开发还是自动化测试等领域...
- **代理配置**:在某些情况下,HTTP请求可能需要通过代理服务器,HttpClient提供了灵活的代理配置选项。 - **请求撤销**:在执行过程中,用户可能需要撤销正在进行的HTTP请求。 - **连接驱逐策略和保活策略**:...
3. **请求和响应处理**:HttpClient可以设置请求头、参数、编码方式等,并能解析HTTP响应,包括状态码、响应头和响应体内容。 4. **Cookie管理**:支持自动处理服务器返回的Cookie,方便进行会话管理。 5. **HTTP...
- **扩展性**:除了基本的HTTP功能外,HttpClient 还支持高级特性,比如HTTP压缩、代理服务器配置以及自定义错误处理机制等。 #### 三、请求执行 执行HTTP请求是使用HttpClient最基础的操作。在这个过程中,开发者...
- **自定义请求头**:添加自定义请求头来传递额外的信息,如用户代理、认证信息等。 - **异步请求**:HttpClient 4.5及以上版本支持异步API,允许并发处理多个请求。 在实际应用中,HttpClient可以与其他工具或框架...
在实际开发中,HttpClient还支持更复杂的功能,如Cookie管理、多线程处理、HTTPS安全连接、代理设置、自动重定向和认证等。HttpClient的灵活性和强大功能使其成为Java开发者处理HTTP通信的首选工具。 总之,...