首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HttpClient 署理实例(Get方式)

2012-08-27 
HttpClient 代理实例(Get方式)?HttpClient 代理实例(Get方式)?使用的jar包:commons-codec-1.4.jarcommons-

HttpClient 代理实例(Get方式)

?

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

?

使用 HttpClient 需要以下 6 个步骤:

1. 创建 HttpClient 的实例

2. 创建某种连接方法的实例,在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址

3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例

4. 读 response

5. 释放连接。无论执行方法是否成功,都必须释放连接

6. 对得到后的内容进行处理

?

import java.io.IOException;import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpMethod;import org.apache.commons.httpclient.HttpStatus;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;import org.apache.http.client.ClientProtocolException;/** * @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) {// 创建 HttpClient 的实例HttpClient httpClient = new HttpClient();// 代理的主机ProxyHost proxy = new ProxyHost("openproxy.huawei.com", 8080);// 使用代理httpClient.getHostConfiguration().setProxyHost(proxy);// 创建Get连接方法的实例HttpMethod getMethod = new GetMethod("http://www.apache.org");// 使用系统提供的默认的恢复策略getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler());try {// 请求URISystem.out.println("executing request " + getMethod.getURI());// 执行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 (ClientProtocolException e) {e.printStackTrace();} catch (URIException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {// 释放连接getMethod.abort();}}}
?

?

1 楼 xurichusheng 2012-01-10   由于是执行在网络上的程序,在运行executeMethod方法的时候,需要处理两个异常,分别是HttpException和IOException。

      引起第一种异常的原因主要可能是在构造getMethod的时候传入的协议不对,比如不小心将"http"写成"htp",或者服务器端返回的内容不正常等,并且该异常发生是不可恢复的;

      第二种异常一般是由于网络原因引起的异常,对于这种异常 (IOException),HttpClient会根据你指定的恢复策略自动试着重新执行executeMethod方法。HttpClient的恢复策略可以自定义(通过实现接口HttpMethodRetryHandler来实现)。

     通过httpClient的方法setParameter设置实现的恢复策略,本文中使用的是系统提供的默认恢复策略,该策略在碰到第二类异常的时候将自动重试3次。(通过注释第37行代码,运行后查看控制台窗口就可以看到会自动重连3次)

热点排行