HttpClient Method

HttpClient Method

简介

 

这篇文章主要是简略的介绍怎样去使用HttpClient提供的方法。这里不可能面面俱到,我会简单的介绍下每个方法的基本操作以及能使你的应用程序运行起来。想得到更多的信息,可参照这里http://hc.apache.org/httpclient-3.x/apidocs/index.html

 

以下的例子程序可能并不是很全,仅仅强调每一种方法重要的独一无二的功能。如需完整的例子,请参照这里

http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/

 

HttpClient主要包含以下几种方法,这里只对OptionsGetHeadPost做介绍。

OptionsGet HeadPost Multipart Post Put Delete Trace

 

Options

 

简介

 

OPTIONS 方法描述了Requst/response chain允许的通信操作的请求信息,此信息被定义在请求的URL中。这个方法允许客户端去定义请求的相关资源以及操作,或者服务端的性能,而不用去发起一个资源请求动作。

 

主要用途

 

Options代表性的方法是用来定义服务端支持那些方法,只需通过getAllowedMethods方法。

 

OptionsMethod options = new OptionsMethod(http://jakarta.apache.org);

//执行方法 处理任何错误信息

Enumeration allowedMethods = options.getAllowedMethods();

Options.releaseConnection();

 

GET

 

简介

 

Get方法获取任何信息都是通过Requset-URL来实现的。如果Request-URL指向数据生产程序,在resposne里将会返回生产出来的数据而不是程序的源代码文本,除非该程序就是输出一个文本。

 

若请求信息中包If-Unmodified-Since, If-Match, If-None-Match, If-Range header  这些字段,GET方法意为有条件的GET”,只有在特定的情况下才会发送Get请求。这就避免了由于客户端没有将传输数据准备好,或是无谓的刷新页面而带来的网络消耗。

 

主要用途

 

Get方法主要是用来从服务端下载文档。可以用getResposneBodygetResponse

-BodyAsStreamgetResponseBodyAsString这些方法来完成。一般情况下,不需要在处理数据前缓存所有的数据到内存中时,getResponseBodyAsStream方法是最好的选择。

 

GetMethod get = new GetMethod(http://httpcomponents.apache.org);

//执行并处理异常

……

InputStream in = get.getResponseBodyAsStream();

//input stream中取得数据并处理

get.releaseConnection();

 

Head

 

简介

 

HEAD方法和GET方法很相似,唯一不同的地方在于Head方法要求服务端不能够返回消息体。通过Head方法获得的HTTP headers信息必须要和Get方法取得的headers信息相吻合。这样我们就可以通过Head方法在不传输实际资源的情况下获知资源meta的信息。

 

通常我们使用Head方法去测试超链接可访问性。

 

当我们的程序实现了缓存机制,那么通过Response中的HEAD信息来判断缓存内容和当前内容是否有不同就显得尤为重要,比如,通过比对Content-LengthContent-MD5EtagLast-Modified就可判断出真正的内容是否存在更新,以便于我们将程序中的内容缓存进行及时的更新。

 

主要用途

 

Head方法主要用来检索Response中的meta信息,以此来判断资源是否已被更改。而使用header方法上并没有和其他方法有什么不同,可以通过getResponseHeaders()来完成。

 

HeadMethod head = new HeadMethod("http://jakarta.apache.org");

        // execute the method and handle any error responses.

        ...

        // Retrieve all the headers.

        Header[] headers = head.getResponseHeaders();

 

        // Retrieve just the last modified header value.

        String lastModified =

            head.getResponseHeader("last-modified").getValue();

 

POST

 

简介

 

Post方法用来完成这样的请求,在URL中用将数据单独封装成一个实体Requset-Line来作为请求一个子资源发送到服务端。这意为着数据通常被服务器端程序存储到服务端。

 

Post方法包含以下几个功能点:

·       现有资源的注释

·       向布告栏,新闻组,邮件列表或是类似的组织发送消息

·       向数据处理程序发送一组form表单的数据。

·       通过附加操作扩展数据库

 

主要用途

 

在使用Post方法时主要有俩个步骤,第一给Request提供数据,第二读取服务端返回的Response

 

提供Requset数据有俩中方式,setRequsetBody,这种方式可以以InputStreamNameValuePair对象数组和String作为输入参数。最简单的表单就是去输入一个NameValuePair并且允许HttpClient依据规范来格式化Request body

 

POST方法返回的Response body可以通过getResponseBody来读取。

 

PostMethod post = new PostMethod("http://jakarata.apache.org/");

        NameValuePair[] data = {

          new NameValuePair("user", "joe"),

          new NameValuePair("password", "bloggs")

        };

        post.setRequestBody(data);

        // execute method and handle any error responses.

        ...

        InputStream in = post.getResponseBodyAsStream();

        // handle response.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http工具类:package com.tpl.util; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; /** * */ public class HttpClientUtil { public static void main(String arg[]) throws Exception { String url = "http://xxx/project/getxxx.action"; JSONObject params= new JSONObject(); List res=new ArrayList(); JSONObject params1 = new JSONObject(); // params1.put("code", "200"); // params1.put("phone", "13240186028"); res.add(params1); params.put("result", res); String ret = doPost(url, params).toString(); System.out.println(ret); } /** httpClient的get请求方式2 * @return * @throws Exception */ public static String doGet(String url, String charset) throws Exception { /* * 使用 GetMethod 来访问一个 URL 对应的网页,实现步骤: 1:生成一个 HttpClinet 对象并设置相应的参数。 * 2:生成一个 GetMethod 对象并设置响应的参数。 3:用 HttpClinet 生成的对象来执行 GetMethod 生成的Get * 方法。 4:处理响应状态码。 5:若响应正常,处理 HTTP 响应内容。 6:释放连接。 */ /* 1 生成 HttpClinet 对象并设置参数 */ HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod getMethod = new GetMethod(url); // 设置 get 请求超时为 5 秒

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值