import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
public class MyProxy {
private HttpClient client;
private HttpMethodBase method;
private byte[] binaryData;
private Header[] headers; // 响应头信息
public MyProxy() {
this.client = new HttpClient(); // 创建一个HttpClient实例
}
// 配置客户端请求参数
public void config(String proxyHost, int proxyPort, String url) throws URIException, NullPointerException {
this.method = new GetMethod();
HostConfiguration hostConfiguration = new HostConfiguration();
URI uri = new URI(url, true);
hostConfiguration.setHost(uri);
this.client.setHostConfiguration(hostConfiguration);
this.client.getHostConfiguration().setProxy(proxyHost, proxyPort); // 配置代理IP和端口
}
public void execute() throws HttpException, IOException { // 执行请求
int status = this.client.executeMethod(this.method);
if(status == HttpStatus.SC_OK) {
this.headers = this.method.getResponseHeaders();
InputStream stream = this.method.getResponseBodyAsStream();
if(stream != null) {
ByteArrayOutputStream data = new ByteArrayOutputStream();
int readCount = 0;
byte[] buffer = new byte[512];
while((readCount=stream.read(buffer))>0) {
data.write(buffer);
}
this.binaryData = data.toByteArray();
}
}
}
private void printResponseHeaders() { // 打印响应头信息
for(Header header : this.headers) {
System.out.println(header.getName() + " : " + header.getValue());
}
}
private void printStringData(String encoding) throws UnsupportedEncodingException { // 简单编码并打印响应字符串数据
if(encoding == null) {
encoding = "utf-8";
}
String data = new String(this.binaryData, encoding);
System.out.println(data);
}
public static void main(String[] args) throws Exception
{
System.setProperty( "org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog" );
String url = "http://www.163.com"; // 无法通过浏览直接器访问,你可以找到一个需要使用代理访问的网站
MyProxy mp = new MyProxy();
String proxyHost = "72.36.112.71";
int proxyPort = 3124;
mp.config(proxyHost, proxyPort, url);
mp.execute();
mp.printStringData(null);
mp.printResponseHeaders();
}
}
分享到:
相关推荐
HttpClient代理访问网络
以下是一个简单的示例代码,展示了如何配置HttpClient4来通过匿名代理访问网页: ```java import org.apache.http.HttpHost; import org.apache.http.client.config.RequestConfig; import org.apache....
【标题】:“httpclient4.1访问https的配置方法” 【描述】:“本教程将指导你如何利用Apache HttpClient 4.1实现对HTTPS服务的访问,首先需要在Tomcat服务器上配置SSL支持。我们将涵盖SSL证书的生成、Tomcat服务器...
《cocos2dx中HttpClient网络访问详解》 在游戏开发领域,Cocos2d-x是一个广泛应用的开源跨平台2D游戏引擎,它支持多种操作系统,包括Windows 10。在网络功能方面,Cocos2d-x提供了HttpClient类,使得游戏能够进行...
**2.8 HttpClient代理配置** - 如果网络环境需要使用代理服务器,则需要配置HttpClient以使用正确的代理设置。 #### 三、HTTP状态管理 **3.1 HTTP Cookies** - Cookies用于保存用户的登录状态或其他信息。 - **...
2. **登录和cookie管理**:处理登录过程,保存和发送cookie,以便于访问需要登录的页面。 3. **模拟浏览器行为**:设置User-Agent,处理JavaScript,支持cookies,模仿真实用户的行为。 4. **反反爬策略**:应对...
HttpClient之Https应用实例~ 包含: HttpClient 使用代理访问Https HttpClient 信任所有主机-对于任何证书都不做检查 HttpClient 允许所有证书的校验(包括过期证书)
此外,`HttpClient` 还支持重定向处理、代理服务器以及自定义请求头等功能。 #### 二、安装与配置 在使用 `HttpClient` 之前,首先需要下载并安装必要的组件: 1. **下载 HttpClient**:可以从官方网站 ...
它支持HTTP/1.1和部分HTTP/2规范,可以处理复杂的HTTP方法、认证、缓存、代理以及重定向等特性。 二、主要组件 1. `commons-httpclient-3.1.jar`: 这是HttpClient的核心库,包含了所有执行HTTP请求和处理响应的类...
HttpClient不仅支持HTTP协议,还支持HTTPS等其他协议,并且能够处理重定向、代理服务器以及身份验证等问题。此外,HttpClient还具有很高的灵活性和可扩展性,能够满足各种复杂的网络请求需求。 #### 三、调用...
这使得HttpClient能够安全地访问需要身份验证的资源。 另外,HttpClient还提供了对Cookie的管理。通过`CookiePolicy`和`CookieSpec`,我们可以控制Cookie的接收和发送策略,确保合规性。 在使用过程中,我们还需要...
HttpClient组件允许应用程序直接通过HTTP协议访问Web服务器上的资源,这对于RIA(Rich Internet Applications)和Web服务客户端的开发尤其有用。 HttpClient组件的主要特点和功能包括: 1. 实现了HTTP 1.0和1.1的...
除了基本的HTTP请求,HttpClient还支持Cookie管理、身份验证、代理设置等高级功能。例如,使用`CookieStore`可以方便地管理会话cookie,而`AuthCache`则有助于处理服务器的身份验证需求。 在实际应用中,HttpClient...
7. **HTTP代理支持**:对于需要通过代理服务器访问互联网的应用,HttpClient提供了代理配置选项。 8. **重试策略**:HttpClient允许开发者定义重试策略,当网络不稳定时,可以自动重试请求,增加请求的成功率。 9....
在IT行业中,HTTP代理是一种网络通信机制,它允许客户端(如Web浏览器)通过另一台服务器作为中介来访问互联网上的资源。这种技术常用于提高匿名性、优化网络性能或绕过特定的网络限制。本篇文章将深入探讨如何使用...
HttpClient还可以处理更复杂的情况,例如设置代理、使用POST方法提交表单数据、处理HTTPS连接等。对于POST方法,可以使用PostMethod类,并通过`setParameters`方法添加参数: ```java PostMethod postMethod = new ...
1. **代理问题**:在进行网络请求时,有时我们需要通过代理服务器来访问目标资源。HttpClient 4.3封装工具类支持配置HTTP代理或SOCKS代理,包括设置代理的主机名、端口号,以及代理认证等。这样,即使在需要代理的...
5. **使用代理**:在需要经过代理服务器访问互联网的环境中工作。 6. **进行认证**:对受保护的Web资源进行身份验证。 总的来说,Apache Commons HttpClient 3.1是Java开发者处理HTTP通信的强大工具,它提供了丰富...
8. **代理设置**:对于需要通过代理服务器访问的网络资源,HttpClient可以配置代理设置,进行代理通信。 9. **Cookie管理**:HttpClient可以管理Cookie,处理会话保持和跨域问题。 在实际应用中,为了使用...