`
xurichusheng
  • 浏览: 346191 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

HttpClient 代理实例(Get方式) 线程池

 
阅读更多

 

import java.io.IOException;
import java.util.concurrent.*;

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

/**
 * @ClassName: ThreadProxy
 * @Description: 根据输入的url,获取对应的内容
 * @author
 * @date 2012-1-10 下午2:23:46
 * @version V1.0
 */
public class ThreadProxy {

	/**
	 * @Title: main
	 * @Description: 根据输入的url,获取对应的内容
	 * @param args
	 * @author
	 * @date 2012-1-10
	 */
	public static void main(String[] args) {

		String url = "http://www.apache.org";
		try {
			new ThreadProxy().get(url);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * @Title: get
	 * @Description: 根据输入的url,获取对应的内容
	 * @param url
	 * @author 
	 * @date 2012-1-10
	 */
	public void get(final String url) {

		MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();

		// 创建 HttpClient 的实例
		final HttpClient httpClient = new HttpClient(manager);

		// 代理的主机
		ProxyHost proxy = new ProxyHost("openproxy.huawei.com", 8080);

		// 使用代理
		httpClient.getHostConfiguration().setProxyHost(proxy);

		// 创建Get连接方法的实例
		final HttpMethod getMethod = new GetMethod(url);

		// 使用系统提供的默认的恢复策略
		getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
				new DefaultHttpMethodRetryHandler());

		// 创建缓冲线程池
		ExecutorService service = Executors.newCachedThreadPool();

		// Future 表示异步计算的结果
		Future<String> future = service.submit(new Callable<String>() {

			@Override
			public String call() throws Exception {
				try {
					// 请求URI
					System.out.println("executing request : " + url);

					// 执行getMethod
					int status = httpClient.executeMethod(getMethod);

					System.out.println("status:" + status);

					// 连接返回的状态码
					if (HttpStatus.SC_OK == status) {

						System.out.println("Connection to "
								+ getMethod.getURI() + " Success!");

						// 获取到的内容
						String responseBody = getMethod
								.getResponseBodyAsString();

						System.out.println(responseBody);
					}
				} catch (URIException e) {
					e.printStackTrace();
				} catch (HttpException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				} catch (Exception e) {
					e.printStackTrace();
				}
				return "";
			}

		});

		try {
			//如有必要,最多等待为使计算完成所给定的时间之后,获取其结果(如果结果可用).
			future.get(5000, TimeUnit.MILLISECONDS);
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		} catch (TimeoutException e) {
			e.printStackTrace();
		}

		service.shutdown();
		// 释放连接
		getMethod.abort();
	}
}
 
分享到:
评论
1 楼 xurichusheng 2012-01-10  
使用的jar包:

commons-codec-1.4.jar

commons-httpclient.jar

commons-logging-1.1.1.jar

httpclient-4.1.2.jar

httpclient-cache-4.1.2.jar

httpcore-4.1.2.jar

httpmime-4.1.2.jar

相关推荐

    Android的HttpClient开发实例

    3. 关于线程安全:`HttpClient`不是线程安全的,如果你在多线程环境中使用,需要为每个线程创建新的`HttpClient`实例,或者使用线程池和连接池来管理。 4. Android API 22及之后,`HttpClient`被标记为过时,推荐...

    HttpClient发送http请求(post和get)需要的jar包+内符java代码案例+注解详解

    - 注意线程安全问题,HttpClient对象通常不是线程安全的,可能需要为每个请求创建新的HttpClient实例,或者使用线程池和HttpRoutePlanner。 在提供的压缩包中,你可能会找到上述步骤的详细代码示例,以及关于如何...

    HttpClient 4.0学习

    - 创建HttpClient实例,可以选择使用DefaultHttpClient或者使用HttpClientBuilder自定义配置。 - 创建HttpRequestBase子类实例,如HttpGet、HttpPost,设置请求URI和请求头。 - 配置连接管理器、请求配置和认证...

    HttpClient+ Spring实现多线程

    这个工具类可能包含静态方法,用于初始化HttpClient实例、执行GET或POST请求,并处理返回的结果。例如: ```java public class HttpClientUtil { private static CloseableHttpClient httpClient; static { //...

    httpclient4 封装

    HttpClient实例不是线程安全的,建议为每个线程或每个请求创建新的HttpClient实例,或者使用线程池来管理HttpClient实例。 9. **释放资源** 使用完HttpClient后,记得调用`close`方法关闭连接管理器,以避免资源...

    android中Http和HttpClient的Get和Post方法的使用

    1. 创建`HttpClient`实例,`HttpClient httpClient = new DefaultHttpClient();` 2. 创建`HttpGet`或`HttpPost`对象,设置URL。 3. 对于`HttpPost`,使用`setEntity()`方法添加请求体。 4. 使用`httpClient.execute...

    HTTP异步工具包(HttpClient实现)

    通过`HttpClient`实例,我们可以配置请求头、设置超时、管理连接池等。 2. `HttpGet` / `HttpPost`:这些是常见的HTTP方法的表示,用于构造HTTP请求。例如,`HttpGet`用于GET请求,`HttpPost`用于POST请求。 3. `...

    HttpClient4.3需要的jar

    5. **使用方法**:使用HttpClient需要导入相关jar包,然后创建HttpClient实例,构造HttpGet或HttpPost对象,设置请求参数,最后通过HttpClient实例执行请求并获取响应。 6. **连接管理**:HttpClient 4.3引入了更...

    通过HTTPClient获取网络资源

    在这里,`HttpClients.createDefault()`创建了一个默认配置的`HttpClient`实例,而`HttpGet`则指定了请求的URL。接下来,我们可以使用`HttpClient`的`execute`方法发送请求: ```java CloseableHttpResponse ...

    HttpClient用法

    首先,让我们了解如何初始化HttpClient实例。HttpClient的使用通常始于创建一个HttpClient对象。你可以使用`HttpClients.createDefault()`来创建一个基本配置的实例,或者通过`HttpClientBuilder`自定义配置,如设置...

    Android使用HttpClient和HttpsUrlConnection两种方式访问https网站

    // 创建HttpClient实例 HttpClient httpClient = new DefaultHttpClient(); // 创建HttpGet请求 HttpGet httpGet = new HttpGet("https://example.com"); // 设置连接管理器 SchemeRegistry schemeRegistry = new ...

    httpclient所需jar包

    使用HTTPClient进行HTTP通信时,开发者可以创建`HttpClient`实例,然后使用`HttpGet`或`HttpPost`等方法构造请求。例如,发起一个GET请求可以这样写: ```java CloseableHttpClient httpClient = HttpClients....

    httpclient-4.5.2.jar.zip

    - **创建HttpClient实例**:使用`HttpClientBuilder`构建器创建HttpClient对象,可以配置连接池大小、超时等参数。 - **构建HttpGet/HttpPost请求**:通过`HttpGet`或`HttpPost`构造HTTP请求,设置URL、方法和请求...

    JAVA利用HttpClient进行HTTPS接口调用

    接下来,`HttpClientUtil.java`文件可能是实现HttpClient工具类,提供一个静态方法来创建和初始化HttpClient实例。这个方法可能包含以下步骤: 1. 创建一个CloseableHttpClient实例,通常使用HttpClientBuilder构建...

    HttpClient jar包

    9. **HttpClientBuilder**:提供了一种构建HttpClient实例的灵活方式,允许你在初始化时配置各种参数。 10. **CloseableHttpClient**:实现了自动关闭连接的接口,防止资源泄漏。 为了使用HttpClient,你需要将...

    HttpClient学习总结.docx

    1. 创建HttpClient实例,通常是通过HttpClient的默认构造函数。 2. 创建特定HTTP方法的实例,例如GetMethod,传入请求的URL。 3. 使用HttpClient实例的execute方法执行HttpMethod。 4. 处理响应,获取并解析...

    爬虫:httpclient+jsoup

    - 创建HttpClient实例,例如`CloseableHttpClient httpClient = HttpClients.createDefault();` - 构建HttpGet或HttpPost对象,指定目标URL。 - 发送请求并获取HttpResponse,如`HttpResponse response = ...

    httpclient-4.5.5

    4. **代理服务器**:HttpClient 支持通过代理服务器进行网络访问,适应企业内网环境。 总结,Apache HttpClient 4.5.5 是一个强大且可靠的网络通信工具,它的易用性、灵活性和高性能使其成为 Java 开发者的首选。...

    httpClient 调用远程接口 获取数据到本地文件夹

    首先,我们需要创建一个HttpClient实例,然后创建HttpGet或HttpPost对象来指定请求的URL。接着,我们可以通过设置Header、添加请求参数等方式定制请求。 2. **不断查询与数据存储**: 在这个例子中,程序会不断地...

Global site tag (gtag.js) - Google Analytics