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

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

 
阅读更多

使用的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

 

 

import java.io.IOException;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.ProxyHost;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

/**
 * @ClassName: ProxySample
 * @Description: 测试HttpClient代理
 * @author
 * @date 2012-1-10 上午9:45:10
 * @version V1.0
 */
public class ProxySample {

	/**
	 * @Title: main
	 * @Description: 测试HttpClient代理
	 * @param args
	 * @author
	 * @date 2012-1-10
	 */
	public static void main(String[] args) {

		String url = "http://www.apache.org";
		new ProxySample().get(url);
	}

	/**
	 * @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());

		
		Thread t = new Thread(new Runnable() {

			@Override
			public void run() {
				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();
				}
			}
		});
		// 将该线程标记为守护线程或用户线程
		/* t.setDaemon(true); */
		// 启动线程
		t.start();
		try {
			// 等待5s后结束
			t.join(5000L);
		} catch (InterruptedException e) {
			t.interrupt();
			e.printStackTrace();
		}
		// 释放连接
		getMethod.abort();
	}
}

 

分享到:
评论

相关推荐

    Android的HttpClient开发实例

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

    httpclient著名的多线程框架

    1. **初始化HttpClient**:首先,我们需要创建一个HttpClient实例,设置连接超时、读取超时等参数,确保在网络不稳定时能够及时响应。 2. **构建HttpGet或HttpPost对象**:根据需求,我们可以选择HttpGet或HttpPost...

    HttpClient+ Spring实现多线程

    注意在并发环境中,必须确保HttpClient的线程安全,例如,避免在多个线程之间共享同一个HttpClient实例,而是为每个请求创建新的HttpClient,或者使用连接池来复用连接。 总的来说,HttpClient与Spring的结合使得在...

    用HttpClient写了一个多线程下载软件

    HttpClient的主要组件包括HttpClient实例、HttpGet或HttpPost请求对象、HttpResponse响应对象以及HttpEntity实体。我们可以通过HttpClient发送请求,获取响应,然后从HttpEntity中提取数据。例如,创建一个GET请求:...

    HttpClient (POST GET PUT)请求

    HttpClient实例负责发起网络请求,HttpRequest表示我们想要执行的HTTP操作(如GET、POST或PUT),而HttpResponse则包含了服务器返回的数据和状态信息。 **GET请求** GET请求是最常见的HTTP请求,用于获取资源。在...

    httpclient多线程下载(分段下载)实践

    每个线程会维护自己的下载范围,并使用HTTPClient发送GET请求获取相应段的数据。HTTP请求中的Range头字段是实现分段下载的关键,它指定服务器返回文件的哪个部分。例如,如果要下载第5MB到第10MB的部分,Range头可能...

    C#实现HTTP代理

    四、创建HttpClient实例并发送请求 有了处理程序后,我们可以创建HttpClient实例,并使用它来发送HTTP请求: ```csharp using (var client = new HttpClient(handler)) { var response = await client.GetAsync(...

    Android-Httpclient_Get_Post

    在Android早期版本中,`HttpClient`是官方推荐的网络通信方式,但在API级别22之后,其已被弃用,取而代之的是`HttpURLConnection`和`OkHttp`等更现代、更高效的库。然而,由于`HttpClient`的成熟性和易用性,许多...

    httpClient4.3.6包和实例

    1. **HttpClient实例**:HttpClient是线程不安全的,所以通常推荐每个请求创建一个新实例。`HttpClientBuilder`类可以用来构建自定义配置的客户端实例。 2. **请求执行器(RequestExecutor)**:处理HTTP请求和响应...

    使用Apache HttpClient实现多线程下载的小例子

    在这个小例子中,我们将讨论如何利用HttpClient实现多线程下载,以提高文件下载效率。 首先,我们需要在项目中引入Apache HttpClient的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml ...

    使用java的HttpClient实现多线程并发

    现在,我们可以创建一个基于连接池的HttpClient实例: ```java // 创建HttpClient实例,使用连接池管理器 httpClient = HttpClients.custom().setConnectionManager(cm).build(); ``` 为了实现多线程并发,我们需要...

    Httpclient依赖包

    5. **线程安全**:HttpClient实例不是线程安全的,如果在多线程环境中使用,需要为每个线程创建独立的HttpClient实例,或者使用线程局部变量。 总的来说,HttpClient是Java开发者在进行HTTP通信时的重要工具,它的...

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

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

    HTTPClient 的一个封装

    - **线程安全**:确保封装的HttpClient实例在多线程环境中的安全使用。 - **请求/响应缓存**:在本地缓存HTTP请求和响应,减少网络延迟。 文件名为httpClient的压缩包很可能包含了封装HttpClient的相关代码,可能...

    httpClient官方实例

    HttpClient允许开发者发送GET、POST、PUT、DELETE等各种HTTP方法的请求,并处理响应。这些请求可以携带参数、头信息、主体内容等。响应对象包含了HTTP状态码、响应头和响应体。 2. **连接管理**: HttpClient提供...

    apache,httpget,httpclient用到的包

    1. **初始化HttpClient**:首先,你需要创建一个HttpClient实例,可能需要配置连接管理器、超时设置、代理等参数。 2. **创建HttpGet请求**:根据需求,创建HttpGet对象,设置请求的URL。 3. **执行请求**:使用...

    get 和post 实例

    在多线程环境中,为避免资源竞争和提高性能,我们通常会创建一个线程安全的HttpClient实例。可以使用静态成员变量或者单例模式来实现: ```java public class HttpClientSingleton { private static ...

    httpclient

    同时,需要注意HttpClient不是线程安全的,因此在多线程环境中,每个线程应有自己的HttpClient实例。 6. **处理重定向**: HttpClient默认会自动处理重定向,但你可以通过配置`RedirectStrategy`来改变这一行为。 ...

    httpclient4.2.1.zip

    1. **创建HttpClient实例**: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ``` 2. **构造HttpGet请求**: ```java HttpGet httpGet = new HttpGet("http://example.com"); ``` 3....

    httpclient-4.5.3.zip

    - **线程安全**:HttpClient实例不是线程安全的,建议每个请求使用新的HttpClient实例,或者使用多线程安全的连接管理器。 5. **与其他库的集成** - HttpClient可以轻松与Spring框架集成,通过`...

Global site tag (gtag.js) - Google Analytics