- 浏览: 1489222 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (460)
- java (148)
- javascript (34)
- Flex文章 (4)
- css+div (2)
- ajax (6)
- extjs (11)
- 人生感悟 (9)
- struts2.0 (6)
- IT之路,生活 (15)
- hibernate (6)
- struts1 (1)
- spring (5)
- j2ee错误 (3)
- Dwr (5)
- Linux (33)
- C++ (3)
- SWT Win32 (2)
- EJB (1)
- JPA (4)
- C语言和LinuxC (7)
- SQL (13)
- 项目经理 (6)
- db2 (2)
- java数据结构 (2)
- 网页播放器flv (1)
- 数据库 (24)
- 用户体验设计学习 (2)
- 网络电话 (5)
- 军事理论 (4)
- android (3)
- oracle (18)
- oracle ebs form (11)
- oracle ebs oaf (4)
- erp (20)
- DBA (9)
- java中URL 的编码和解码函数 (1)
- 铁血丹心 (1)
- excel 单元格格式不能立即生效 (1)
- Java调用bat文件 (1)
- 如何把本地outlook中的邮件上传到网络邮箱中 (1)
- java 报表 打印 (1)
- 创建dblink (1)
- 图标前台框架 (1)
- vnc (1)
- FORM (1)
- MYSQL (1)
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
web打印不显示页眉页脚 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
Javascript网页打印大全 -
hardyer:
大哥写的很实在,受教了,提前祝你元旦快乐!
黎活明给程序员的忠告 -
cxysilahi:
请问WIN7 64位,调用报错Exception in thr ...
JNative的初步使用 -
action1949:
好东西,解决问题
JFreeChart乱码解决方法
综述
此指南的设计用来来提供一个怎么样去使用HttpClient的基本概况。如果完成此指南的阅读应该能够使用下载页面的HttpClient开发一个简单的应用了。
准备
第一件事情是你需要有一个HttpClient以及其附件。此指南适用于HttpClient3.0。所以你必须要有JDK1.3或是更高版本的JDK。
下载HttpClient及其附件并把他们设置到你的CLASSPATH环境里。
概念
一般使用HttpClient包含以下几个步骤:
· 创建一个HttpClient实例
· 创建一个方法的实例(比如GetMethod),在方法的构造方法里可以传入你要去连接的URL。
· 告诉HttpClient去执行方法。
· 读取返回的Response。
· 释放连接。
· 处理Response。
下面我将会解释如何去执行每一步。需要注意的是我们这里假定服务器总是放回正确的结果。这一点很重要,因为HTTP 1.1 允许重复的请求去使用相同的连接,只需要简单的一个接一个的发送请求。显然,如果我们不去读取第一次请求的Response,它的数据在第二次处理请求的时候被读出来。HttpClient提供了此解决方案,为了避免这个问题,释放连接就显的相当重要了。一但释放HttpClient,connection也将是可重用的。
实例化HttpClient
这里无参构造方法为大多数的情况提供了一个默认的、良好的配置。
HttpCient client = new HttpClient();
创建一个方法
在HttpClient里,符合HTTP协议的各种Methods相对应的class类都实现了HttpMethod这个接口,这些类都放到了org..apache.commons.httpclient.methods这个包下面。
下面这段代码通过Get方法简单的通过URL得到该URL指向的文件。
HttpMethod method = new GetMethod(”Http://www.apache.org/”);
执行方法
调用client.executeMethod(method)就可以执行方法,网络不稳定的情况下,我们也要对错误进行处理。executeMethod可能抛出HttpException和IOException异常。
另外一些有用的信息就是从服务器返回的状态码。状态码在执行executeMethod方法时以int基本类型返回,通过状态码我们可以判断请求是否成功,或是需要client进一步进行处理,像身份验证。
HttpException和IOException
一个HttpException对应一个逻辑错误,当Request不能够被发送或是Response不能够按照HTTP协议来解析的时候抛出,通常这种错误不能够恢复。这里是对HttpClient 的异常处理的详细讨论。请注意,HttpException继承了IOException,若你的应用不需要区分协议和传输错误时,你可以忽略HttpException或是简单的捕获IOException。
Method的自恢复
每个默认的HttpClient都会自动尝试从不是致命的错误中恢复,当一个建档IOException抛出时,HttpClient重复3次直到将Requset的全部内容发送到目标服务器。你可以通过以下代码来设置恢复机制。
Client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
你也可以自己定制恢复机制,重复的次数也可以替换。
读取Response
通常在忽略服务器返回的状态码的情况下,读取Response body,这一点很重要。有三种方法可以做到:
· 调用method.getResponseBody()。可返回被包含在Resonse body中的byte数据。
· 调用method.getResposneBodyAsString()。此方法将返回包含在Response body中的String,这里需要注意的是bytes专程String是使用的默认编码,所以此方法并能够在所以的平台上正确执行。
· 调用method.getResponseBodyAsStream()。当再次调用stream.close()时会返回包含完整内容的流。此方法适用于对接受大量数据,可将数据缓存到一个文件中或是处理。
释放连接
这是关键的一个步骤。我们必须告诉HttpClient我们已经做完所有的工作,这样HttpClient才可以被重用,如果不释放连接HttpClient会无限期的等待直接关闭连接。
Method.releaseConnection()。
处理Response
这里我只是简单的把Response中的内容打印处理
System.out.println(new String(responseBody));
处理Resposne时候可以根据你的具体应用来做相应的处理。
最后是源代码
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.io.*;
public class HttpClientTutorial {
private static String url = "http://www.apache.org/";
public static void main(String[] args) {
// Create an instance of HttpClient.
HttpClient client = new HttpClient();
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
}
}
发表评论
-
Oracle Developer10G 安装
2020-09-09 18:03 383oracle 客户端也要删除,以前的oracle产品 ... -
打开Eclipse时出现"The Eclipse executable launcher was unable to locate its companion
2018-06-05 15:06 9784打开Eclipse时出现"The Eclipse ... -
J2EE通过tomcat部署的两种方式
2017-09-12 09:01 695转载:http://blog.csdn.net/psp000 ... -
Linux安装Tomcat7
2016-03-30 15:01 903http://blog.sina.com.cn/s/blog ... -
java支持跨平台获取cpuid、主板id、硬盘id、mac地址 (兼容windows、Linux)(转)
2015-11-17 22:10 1637http://blog.csdn.net/flyingclo ... -
栋哥涕啐茆
2015-10-27 10:49 785栋哥涕啐茆 -
Eclipse快捷键 10个最有用的快捷键
2015-10-27 10:18 820Eclipse中10个最有用的快捷键组合 一个Eclip ... -
java上传头像图像剪切
2015-04-02 20:19 1205java上传头像图像剪切 JQUERY 图片上传裁切 -
创建dblink
2014-12-11 20:01 713CREATE public database link ... -
Bitnami Redmine 安装笔记
2014-12-10 11:28 1673http://atian25.iteye.com/blog/ ... -
利用workflow发送类似数据报表内容的通知页面
2014-11-21 15:03 844利用workflow发送类似数据报表内容的通知页面 ... -
excel科学技术法问题
2014-11-12 13:50 8431.使用导入外部数据的方法2.并且在第三步的时候选择文本,需要 ... -
java.lang.IllegalAccessError
2014-09-29 11:05 1197java.lang.IllegalAccessError: ... -
java如何获取文件编码格式
2014-04-11 11:28 102611:简单判断是UTF-8或不是UTF-8,因为一般除了UTF ... -
JAVA中使用FTPClient上传下载
2013-12-08 13:35 1949方法一:这种方法网上有许多 可以用下面的方式,但是支持批量 ... -
在Java中获取环境变量
2013-11-11 11:18 1468package cy.cn.test; import ... -
ORACLE性能调整笔记
2013-11-05 18:39 0一 关于statspack中等待事件的一些解释 ... -
EBS DBA指南笔记1
2013-11-05 18:35 1937时光飞逝,不从事EBS DBA转眼已有两年多。很还念那段学习 ... -
用html代码在word中插入分页符和页面设置
2013-11-05 17:11 5360<span lang=EN-US style=&quo ... -
OpenJWeb新增二维码图片生成功能
2013-11-05 09:02 1308在开发进销存软件的时 ...
相关推荐
### httpclient使用教程 #### HttpClient概述与重要性 在当今互联网时代,HTTP协议无疑是网络通信中最常用且至关重要的协议之一。随着技术的发展,越来越多的Java应用程序需要直接通过HTTP协议访问网络资源。尽管...
在提供的压缩包文件中,"第一个版本.rar"和"第二个版本.rar"可能包含了不同的HttpClient使用示例或者不同版本的代码。你可以解压并查看这些文件,以便更深入地理解和学习HttpClient的具体用法。每个版本可能包含不同...
《HttpClient使用详解》 HttpClient是Apache软件基金会的 HttpClient项目提供的一款强大的HTTP客户端工具,它允许开发者在Java应用程序中实现复杂的HTTP通信。这份8页的PDF文档深入解析了HttpClient的使用方法,...
### HttpClient 使用指南知识点详解 ...以上是基于提供的部分内容对HttpClient使用指南的相关知识点进行了详细说明。通过这些知识点的学习,可以更好地理解和掌握HttpClient的工作原理及其在实际开发中的应用。
在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...
这篇博客文章《HttpClient使用》(链接:https://leesonhomme.iteye.com/blog/491095)可能涵盖了HttpClient的基本用法和一些实用技巧。由于没有具体的描述,我们将基于HttpClient的一般知识点进行详细介绍。 1. **...
使用httpClient进行代理
Http协议使用封装jar包(commons-codec-1.3.jar、commons-httpclient-3.1.jar、commons-logging-1.1.jar) 简单使用方法: public static void main(String[] args) { // String str1 = "...;...
httpclient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,本文档提供使用httpclient的使用方法
1. **导入依赖**:在Java项目中使用HttpClient,你需要先将所需的jar文件添加到类路径中。描述中的"所使用的jar.zip"可能包含了HttpClient的库文件,如httpclient、httpcore等。确保导入了这些库,才能使用...
1. **创建HttpClient对象**:这是发送请求的基础,通常使用`HttpClient`类的实例。 2. **创建请求方法**:根据需求创建`HttpGet`或`HttpPost`对象,分别对应GET和POST请求。 3. **设置请求参数**:可以通过`set...
2. **请求和响应模型**:HttpClient使用HttpRequest和HttpResponse对象封装HTTP请求和响应,便于处理请求头、请求体和响应头、响应体。 3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、...
在HttpClient的使用中,我们首先需要了解几个核心组件: 1. **HttpClient实例**:这是整个HTTP通信的基础,通过`HttpClientBuilder`创建,可以设置各种配置,如连接超时、重试策略等。 2. **HttpRequestBase**:这...