HttpClient详解(一)—简介与请求

简介


首先说说HttpClient和Http的关系:

  我们知道HTTP是一个客户端和服务器端请求和应答的标准(TCP)。

  我们通常发起http请求时都在客户端通过get或post的方式发起(项目中最常用的即通过Ajax实现)。

  不仅如此,在服务端java.net包提供了基本通过HTTP访问资源的功能,但它没有提供全面的灵活性和其它很多应用程序需要的

功能。

  HttpClient就是寻求弥补这项空白的组件,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,实

现HTTP协议最新的标准和建议。

 

功能

 

HttpClient 提供的主要的功能:

  1.实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)

  2.支持自动转向

  3.支持 HTTPS 协议

  4.支持代理服务器等

HttpClient 必须的jar包:

  HttpClient:httpclient-4.1.2.jar(最新4.5:http://hc.apache.org/downloads.cgi

  HttpClient用到的jar:httpcore-4.1.2.jar处理常用的编码和commons-logging-1.1.jar记录日志


应用

 

Http方法--执行请求

HttpClient最重要的功能即是执行HTTP方法:

  一个HTTP方法的执行包含一个或多个HTTP请求/HTTP响应交换,通常由HttpClient的内部来处理。而期望用户提供一个要执行

的请求对象,而HttpClient期望传输请求到目标服务器并返回对应的响应对象,或者当执行不成功时抛出异常。

  HttpClientAPI的主要切入点就是定义描述上述规约的HttpClient接口。

使用 HttpClient 进行简单的请求执行过程 需要以下5个步骤(以get方式为例):

  1.创建 HttpClient 的实例

    HttpClient httpclient = new DefaultHttpClient();

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

    HttpGet httpget =new HttpGet("http://localhost/");

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

    HttpResponseresponse = httpclient.execute(httpget);

  4.读取response数据

    调用HttpResponse的getAllHeaders()、getHeaders(Stringname)等方法可获取服务器的响应头;调用HttpResponse的  

getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。

    HttpEntity entity =response.getEntity();

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

    httpclient.close();

说明

如何理解上面的5个步骤及涉及到的类和方法,简单点:

  HttpClient看作是一个浏览器

  HttpGet即一个Get请求

  HttpPost即一个Post请求

  HttpClient.execute(HttpGet/HttpPost)相当于在浏览器或者通过Ajax进行的get和post提交。

  HttpResponsehttp请求后的一个响应

  HttpEntity一个实体对象,我们可以response.getEntity()从响应中获取数据。

 

对于Post请求,我们可以通过NameValuePair封装成list在封装成HttpEntity,用于向服务器端传参数:

    private ListcreateNameValuePair(Map params)
    {
        List nameValuePairs = new ArrayList();

        String key;

        for(Iterator iterator =params.keySet().iterator(); iterator.hasNext(); nameValuePairs.add(newBasicNameValuePair(key, (String)params.get(key))))

            key = (String)iterator.next();
        return nameValuePairs;

    }

对于Get请求,只有客户端的代码newHttpGet(url);将请求数据写在url中

HttpGet httpget =new HttpGet(url);

小结

  HttpClient比较常用的用于调用WebService接口的应用上,通过对HttpGetHttpPost方式完成在服务端调用外部WebService接口,并对接收到的数据进行处理的应用。接下来将继续对HttpClient中的细节进行研究学习。HttpClient详解(一)---请求详解



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值