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() {@Overridepublic void run() {try {// 请求URISystem.out.println("executing request : " + url);// 执行getMethodint 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();}}?