`
xyliufeng
  • 浏览: 87250 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

httpclient 代理访问

阅读更多

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代理访问网络

    HttpClient代理访问网络

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

    以下是一个简单的示例代码,展示了如何配置HttpClient4来通过匿名代理访问网页: ```java import org.apache.http.HttpHost; import org.apache.http.client.config.RequestConfig; import org.apache....

    httpclient4.1访问https的配置方法

    【标题】:“httpclient4.1访问https的配置方法” 【描述】:“本教程将指导你如何利用Apache HttpClient 4.1实现对HTTPS服务的访问,首先需要在Tomcat服务器上配置SSL支持。我们将涵盖SSL证书的生成、Tomcat服务器...

    cocos2dx HttpClient网络访问

    《cocos2dx中HttpClient网络访问详解》 在游戏开发领域,Cocos2d-x是一个广泛应用的开源跨平台2D游戏引擎,它支持多种操作系统,包括Windows 10。在网络功能方面,Cocos2d-x提供了HttpClient类,使得游戏能够进行...

    httpClient使用指南最新版

    **2.8 HttpClient代理配置** - 如果网络环境需要使用代理服务器,则需要配置HttpClient以使用正确的代理设置。 #### 三、HTTP状态管理 **3.1 HTTP Cookies** - Cookies用于保存用户的登录状态或其他信息。 - **...

    httpclient

    2. **登录和cookie管理**:处理登录过程,保存和发送cookie,以便于访问需要登录的页面。 3. **模拟浏览器行为**:设置User-Agent,处理JavaScript,支持cookies,模仿真实用户的行为。 4. **反反爬策略**:应对...

    HttpClient之Https应用实例

    HttpClient之Https应用实例~ 包含: HttpClient 使用代理访问Https HttpClient 信任所有主机-对于任何证书都不做检查 HttpClient 允许所有证书的校验(包括过期证书)

    HttpClient

    此外,`HttpClient` 还支持重定向处理、代理服务器以及自定义请求头等功能。 #### 二、安装与配置 在使用 `HttpClient` 之前,首先需要下载并安装必要的组件: 1. **下载 HttpClient**:可以从官方网站 ...

    httpclient jar

    它支持HTTP/1.1和部分HTTP/2规范,可以处理复杂的HTTP方法、认证、缓存、代理以及重定向等特性。 二、主要组件 1. `commons-httpclient-3.1.jar`: 这是HttpClient的核心库,包含了所有执行HTTP请求和处理响应的类...

    httpClient调用webservice接口

    HttpClient不仅支持HTTP协议,还支持HTTPS等其他协议,并且能够处理重定向、代理服务器以及身份验证等问题。此外,HttpClient还具有很高的灵活性和可扩展性,能够满足各种复杂的网络请求需求。 #### 三、调用...

    commons-httpclient-3.1.jar

    这使得HttpClient能够安全地访问需要身份验证的资源。 另外,HttpClient还提供了对Cookie的管理。通过`CookiePolicy`和`CookieSpec`,我们可以控制Cookie的接收和发送策略,确保合规性。 在使用过程中,我们还需要...

    HTTPClient组件的应用

    HttpClient组件允许应用程序直接通过HTTP协议访问Web服务器上的资源,这对于RIA(Rich Internet Applications)和Web服务客户端的开发尤其有用。 HttpClient组件的主要特点和功能包括: 1. 实现了HTTP 1.0和1.1的...

    httpclient-4.3.6.jar包,安卓异步框架必备

    除了基本的HTTP请求,HttpClient还支持Cookie管理、身份验证、代理设置等高级功能。例如,使用`CookieStore`可以方便地管理会话cookie,而`AuthCache`则有助于处理服务器的身份验证需求。 在实际应用中,HttpClient...

    org.apache.commons.httpclient相关架包

    7. **HTTP代理支持**:对于需要通过代理服务器访问互联网的应用,HttpClient提供了代理配置选项。 8. **重试策略**:HttpClient允许开发者定义重试策略,当网络不稳定时,可以自动重试请求,增加请求的成功率。 9....

    C#实现HTTP代理

    在IT行业中,HTTP代理是一种网络通信机制,它允许客户端(如Web浏览器)通过另一台服务器作为中介来访问互联网上的资源。这种技术常用于提高匿名性、优化网络性能或绕过特定的网络限制。本篇文章将深入探讨如何使用...

    HttpClient介绍和使用文档

    HttpClient还可以处理更复杂的情况,例如设置代理、使用POST方法提交表单数据、处理HTTPS连接等。对于POST方法,可以使用PostMethod类,并通过`setParameters`方法添加参数: ```java PostMethod postMethod = new ...

    httpclient4.3 封装工具类

    1. **代理问题**:在进行网络请求时,有时我们需要通过代理服务器来访问目标资源。HttpClient 4.3封装工具类支持配置HTTP代理或SOCKS代理,包括设置代理的主机名、端口号,以及代理认证等。这样,即使在需要代理的...

    org.apache.commons.httpclient-3.1.jar

    5. **使用代理**:在需要经过代理服务器访问互联网的环境中工作。 6. **进行认证**:对受保护的Web资源进行身份验证。 总的来说,Apache Commons HttpClient 3.1是Java开发者处理HTTP通信的强大工具,它提供了丰富...

    HttpClient依赖jar包.zip

    8. **代理设置**:对于需要通过代理服务器访问的网络资源,HttpClient可以配置代理设置,进行代理通信。 9. **Cookie管理**:HttpClient可以管理Cookie,处理会话保持和跨域问题。 在实际应用中,为了使用...

Global site tag (gtag.js) - Google Analytics