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主要包含以下几种方法,这里只对Options,Get,Head,Post做介绍。
Options,Get ,Head,Post ,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方法主要是用来从服务端下载文档。可以用getResposneBody,getResponse
-BodyAsStream,getResponseBodyAsString这些方法来完成。一般情况下,不需要在处理数据前缓存所有的数据到内存中时,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-Length,Content-MD5,Etag,Last-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,这种方式可以以InputStream,NameValuePair对象数组和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.
分享到:
- 2009-04-08 17:00
- 浏览 1088
- 评论(0)
- 论坛回复 / 浏览 (0 / 2081)
- 查看更多
相关推荐
HttpClient 4.2.5是HttpClient的一个稳定版本,它引入了许多改进和修复,提高了性能和稳定性。同时,HttpClient依赖于HttpCore库,这是Apache提供的基础HTTP协议处理组件,httpcore-4.4.1.jar即为该组件的4.4.1版本...
HttpClient httpClient = new HttpClient(); PostMethod method = new PostMethod(str1); try { // 需要添加的header数据 List<Header> headers = new ArrayList(); headers.add(new Header("", ...
2. **HttpMethod**:HttpClient提供了多种HttpMethod子类,如GetMethod、PostMethod等,分别对应HTTP的GET、POST等请求方法。 3. **Request和Response**:HttpClient通过发送HttpRequest对象并接收HttpResponse对象...
...httpclient.HttpMethod org.apache.com mons.httpclient.HttpParser org.apache.commons.httpclient.HttpStatus org.apache.commons.httpclient.StatusLine
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....
3. 执行请求:调用HttpClient的execute方法,传入HttpMethod实例。 4. 处理响应:获取HttpResponse对象,读取状态码、头部信息和响应体。 5. 关闭连接:执行完请求后,记得关闭连接,释放资源。 四、高级特性 1. ...
4. 将HttpRequest或HttpMethod通过HttpClient执行,获取HttpResponse。 5. 处理HttpResponse,提取响应数据。 6. 关闭连接,释放资源。 四、连接池管理 HttpClient 3.1支持连接池,可以复用已建立的连接,提高性能...
3. **执行请求**:调用 `HttpClient` 的 `executeMethod(Method method)` 方法来执行 GetMethod 对象。执行后可以通过 `GetMethod.getStatusCode()` 获取响应状态码,判断请求是否成功。 4. **获取响应内容**:可以...
### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...
### HttpClient 实现文件下载 #### 一、简介与原理 在Java开发中,经常会遇到需要通过HTTP协议来获取网络资源的需求,例如从Web服务器下载文件。Apache HttpClient 是一个用于发送HTTP请求的Java类库,它提供了...
使用HttpClient来模拟浏览器GET_POST HttpClient是一个Apache开源组织中的项目,隶属于Jakarta的commons项目,旨在简化HTTP客户端与服务器进行各种通讯编程。通过使用HttpClient,可以轻松地解决以前很头疼的事情,...
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; public class SimpleClient { public static void main(String[] args) throws IOException { ...
在标题和描述中提到的"**httpclient31**"通常指的是这个版本的HttpClient所需的jar文件。以下是一些关键的jar文件,它们是HttpClient 3.1正常运行所必需的: 1. `httpclient-3.1.jar`: 包含HttpClient的主要类和...
《HttpClient 3.1:深入理解与应用》 HttpClient是一个由Apache基金会开发的Java库,主要用于执行HTTP请求,实现客户端的HTTP通信。本手册将详细探讨HttpClient 3.1版本,包括其源代码分析和使用指南,帮助开发者...
int statusCode = httpClient.executeMethod(httpMethod); // 检查状态码 if (statusCode == HttpStatus.SC_OK) { // 处理响应 byte[] responseBody = httpMethod.getResponseBody(); // ... } else { // 处理...
在发送请求时,我们可以使用`HttpGet`、`HttpPost`等类,它们都继承自`HttpMethod`。这些类提供了设置请求头、添加请求体、指定URL等方法。例如,`HttpPost`中的`setEntity`方法用于设置POST请求的数据。 ...
import org.apache.commons.httpclient.params.HttpMethodParams; import java.io.IOException; public class SimpleGet { public static void main(String[] args) throws IOException { // 创建HttpClient实例 ...
这个库包含了一系列的类和接口,如`HttpClient`、`HttpMethod`、`HttpConnection`等,允许开发者构建复杂的HTTP请求并处理响应。 2. **commons-logging-1.1.1.jar**:这是一个日志抽象层,允许应用程序在不关心具体...