HttpClient 基本类库使用
HttpClinet 提供了几个类来支持 HTTP 访问。下面我们通过一些示例代码来熟悉和说明这些类的功能和使用。 HttpClient 提供的 HTTP 的访问主要是通过 GetMethod 类和 PostMethod 类来实现的,他们分别对应了 HTTP Get 请求与 Http Post 请求。
GetMethod
使用 GetMethod 来访问一个 URL 对应的网页,需要如下一些步骤。
- 生成一个 HttpClinet 对象并设置相应的参数。
- 生成一个 GetMethod 对象并设置响应的参数。
- 用 HttpClinet 生成的对象来执行 GetMethod 生成的 Get 方法。
- 处理响应状态码。
- 若响应正常,处理 HTTP 响应内容。
- 释放连接。
清单 1 的代码展示了这些步骤,其中的注释对代码进行了较详细的说明。
清单 1.
/* 1 生成 HttpClinet 对象并设置参数*/
HttpClient httpClient=new HttpClient();
//设置 Http 连接超时为5秒
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
/*2 生成 GetMethod 对象并设置参数*/
GetMethod getMethod=new GetMethod(url);
//设置 get 请求超时为 5 秒
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000);
//设置请求重试处理,用的是默认的重试处理:请求三次
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
/*3 执行 HTTP GET 请求*/
try{
int statusCode = httpClient.executeMethod(getMethod);
/*4 判断访问的状态码*/
if (statusCode != HttpStatus.SC_OK)
{
System.err.println("Method failed: "+ getMethod.getStatusLine());
}
/*5 处理 HTTP 响应内容*/
//HTTP响应头部信息,这里简单打印
Header[] headers=getMethod.getResponseHeaders();
for(Header h: headers)
System.out.println(h.getName()+" "+h.getValue());*/
//读取 HTTP 响应内容,这里简单打印网页内容
byte[] responseBody = getMethod.getResponseBody();//读取为字节数组
System.out.println(new String(responseBody));
//读取为 InputStream,在网页内容数据量大时候推荐使用
InputStream response = getMethod.getResponseBodyAsStream();//
…
}
catch (HttpException e)
{
// 发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
}
catch (IOException e)
{
// 发生网络异常
e.printStackTrace();
} finally {
/*6 .释放连接*/
getMethod.releaseConnection();
}
|
这里值得注意的几个地方是:
- 设置连接超时和请求超时,这两个超时的意义不同,需要分别设置。
- 响应状态码的处理。
- 返回的结果可以为字节数组,也可以为 InputStream,而后者在网页内容数据量较大的时候推荐使用。
在处理返回结果的时候可以根据自己的需要,进行相应的处理。如笔者是需要保存网页
到本地,因此就可以写一个 saveToLocaleFile(byte[] data, String filePath) 的方法,将字节数组保存成本地文件。后续的简易爬虫部分会有相应的介绍。
转载来源:http://tgyd2006.iteye.com/category/27104?show_full=true
分享到:
相关推荐
C#基本类库是.NET框架的核心组成部分,它提供了一系列预定义的类和接口,使得C#开发者能够快速、高效地构建应用程序。这个压缩包文件"**C#基类库**"很可能包含了各种常用且功能丰富的类,它们涵盖了数据处理、文件...
1. **HttpClient的基本使用**:介绍HttpClient类的基本概念,包括如何创建实例,设置请求头,以及发送GET和POST请求。 2. **封装的设计**:讨论如何设计一个网络请求的通用接口或类,比如定义方法如`SendGetAsync`...
5. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、NTLM、Kerberos等。我们可以使用`CredentialsProvider`和`Authenticator`来配置认证信息。 6. **HTTPS支持**:HttpClient可以处理加密的HTTPS连接...
本教程将详细讲解如何利用HttpClient以及第三方MiME(Multipurpose Internet Mail Extensions)文件上传类库,在Android平台上实现文件上传并同时显示进度条。由于HttpClient已经在Android 6.0(API级别23)中被弃用...
7. **测试类TestHttpClient**:压缩包中的`TestHttpClient`可能是用来演示HttpClient基本用法的代码,可能包含了创建HTTP请求、发送请求、处理响应的示例代码。这样的测试类对于理解和学习HttpClient的使用非常有...
Apache HttpClient 是一个强大的客户端HTTP传输类库,旨在为Java开发者提供一个高效、灵活且易于使用的HTTP客户端解决方案。它不仅支持基本的HTTP协议,还能满足更复杂的HTTP场景需求,例如重定向管理、身份验证、...
使用`php-httplib`的基本步骤如下: 1. **引入类库**:首先需要将`php-httplib`的源代码引入到项目中,通常是通过Composer来管理依赖。 2. **创建实例**:创建一个`HttpClient`对象,这是类库的主入口,例如: ``...
这个典藏版还可能包含了对这些类库的使用示例、源代码分析和优化技巧,以帮助开发者更好地理解和应用。总之,对于C#开发者来说,这个资源包是一个宝贵的参考资料,可以加速开发进程,提升代码质量。
《C# 类库查询手册》是一本专注于C#编程语言中类库使用的参考资料,它涵盖了C#编程的核心概念以及.NET框架中的各种类库。这本书旨在帮助开发者深入理解C#类库,提高编程效率,实现更高效、更稳定的应用程序开发。 ...
1. **基于 HttpCore**:HttpClient 是基于 HttpCore 实现的客户端 HTTP 传输类库,这意味着它能够处理 HTTP 协议的基本层面,包括连接管理、请求序列化和响应解析等。 2. **传统 IO 模型**:它基于传统的阻塞式 I/...
以上这些类库构成了Java开发的基础,理解和熟练使用它们是每个Java程序员必备的技能。在实际开发中,根据需求,开发者还会引入其他的第三方库,如Spring、MyBatis、Apache Commons等,但掌握这些基本核心类库是构建...
1. **System.Web**: 这是ASP.NET中最基础的类库,包含了处理HTTP请求、响应的基本类,如HttpContext、HttpRequest、HttpResponse等。这些类提供了处理用户请求、发送响应、管理会话状态等核心功能。 2. **System....
* HttpClient支持基本的HTTP协议,还支持HTTP-aware客户端程序,如web浏览器,Webservice客户端,以及利用或拓展HTTP协议的分布式系统。 HttpClient的优点 * 高度灵活和强大 * 提供了一个功能丰富的HTTP客户端库 *...
HttpClient是一个广泛使用的基于HttpCore的客户端HTTP传输类库,它提供了丰富的API来执行HTTP请求,处理HTTP响应,管理HTTP连接和处理HTTP状态。在本文中,我们将详细介绍HttpClient的核心知识点,包括基本概念、...
以上知识点为HttpClient入门的基础内容,对于想要学习如何在Java中进行HTTP网络编程的人来说是必须掌握的基本技能。随着技术的发展,虽然4.0.1版可能不是现在最新的版本,但其核心的使用方法和API设计思路仍然具有...
4. **commons-io-2.4.jar**:Apache Commons IO是Java IO操作的实用工具类库,包含了各种文件操作、流操作、I/O异常处理等功能,为HTTPClient提供便利的IO操作支持。 描述中还提到了一个名为`ClientSSL.java`的源码...
1. **HTTPClient基本使用** - **导入依赖**:首先需要引入HTTPClient的相关类库,如`import org.apache.http.client.methods.HttpPost;`等。 - **创建HttpClient对象**:使用`DefaultHttpClient`或`...
首先,我们需要了解HttpClient 4的基本用法。HttpClient 4依赖于几个关键的组件,包括`httpclient-4.0.jar`(核心客户端库)、`httpcore-nio-4.0.1.jar`和`httpcore-4.0.1.jar`(HTTP协议处理库),`commons-logging...
同时,HttpURLConnection和HttpClient等网络API的使用也会有所涉及。 6. **反射**:理解反射机制,它是Java动态性的重要体现。通过反射,可以在运行时获取类的信息,创建对象,调用方法,修改字段值等。 7. **异常...