`
lzj0470
  • 浏览: 1274005 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HttpClient 基本类库使用

阅读更多

HttpClient 基本类库使用

HttpClinet 提供了几个类来支持 HTTP 访问。下面我们通过一些示例代码来熟悉和说明这些类的功能和使用。 HttpClient 提供的 HTTP 的访问主要是通过 GetMethod 类和 PostMethod 类来实现的,他们分别对应了 HTTP Get 请求与 Http Post 请求。

GetMethod

使用 GetMethod 来访问一个 URL 对应的网页,需要如下一些步骤。

  1. 生成一个 HttpClinet 对象并设置相应的参数。
  2. 生成一个 GetMethod 对象并设置响应的参数。
  3. 用 HttpClinet 生成的对象来执行 GetMethod 生成的 Get 方法。
  4. 处理响应状态码。
  5. 若响应正常,处理 HTTP 响应内容。
  6. 释放连接。

清单 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();		   
		    }

 

这里值得注意的几个地方是:

  1. 设置连接超时和请求超时,这两个超时的意义不同,需要分别设置。
  2. 响应状态码的处理。
  3. 返回的结果可以为字节数组,也可以为 InputStream,而后者在网页内容数据量较大的时候推荐使用。

在处理返回结果的时候可以根据自己的需要,进行相应的处理。如笔者是需要保存网页

到本地,因此就可以写一个 saveToLocaleFile(byte[] data, String filePath) 的方法,将字节数组保存成本地文件。后续的简易爬虫部分会有相应的介绍。

转载来源:http://tgyd2006.iteye.com/category/27104?show_full=true

分享到:
评论

相关推荐

    C#基本类库大全

    C#基本类库是.NET框架的核心组成部分,它提供了一系列预定义的类和接口,使得C#开发者能够快速、高效地构建应用程序。这个压缩包文件"**C#基类库**"很可能包含了各种常用且功能丰富的类,它们涵盖了数据处理、文件...

    对于C#(HttpClient)方式网络请求的封装

    1. **HttpClient的基本使用**:介绍HttpClient类的基本概念,包括如何创建实例,设置请求头,以及发送GET和POST请求。 2. **封装的设计**:讨论如何设计一个网络请求的通用接口或类,比如定义方法如`SendGetAsync`...

    httpclient第三方类库

    5. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、NTLM、Kerberos等。我们可以使用`CredentialsProvider`和`Authenticator`来配置认证信息。 6. **HTTPS支持**:HttpClient可以处理加密的HTTPS连接...

    Android 使用HttpClient和第三方MiME文件上传类库,实现文件上传带进度条

    本教程将详细讲解如何利用HttpClient以及第三方MiME(Multipurpose Internet Mail Extensions)文件上传类库,在Android平台上实现文件上传并同时显示进度条。由于HttpClient已经在Android 6.0(API级别23)中被弃用...

    HttpClient实例+必备3个jar包

    7. **测试类TestHttpClient**:压缩包中的`TestHttpClient`可能是用来演示HttpClient基本用法的代码,可能包含了创建HTTP请求、发送请求、处理响应的示例代码。这样的测试类对于理解和学习HttpClient的使用非常有...

    httpclient官网教程中文版

    Apache HttpClient 是一个强大的客户端HTTP传输类库,旨在为Java开发者提供一个高效、灵活且易于使用的HTTP客户端解决方案。它不仅支持基本的HTTP协议,还能满足更复杂的HTTP场景需求,例如重定向管理、身份验证、...

    http类库:基于php curl库封装的http类库

    使用`php-httplib`的基本步骤如下: 1. **引入类库**:首先需要将`php-httplib`的源代码引入到项目中,通常是通过Composer来管理依赖。 2. **创建实例**:创建一个`HttpClient`对象,这是类库的主入口,例如: ``...

    收藏多年的C#类库典藏版

    这个典藏版还可能包含了对这些类库的使用示例、源代码分析和优化技巧,以帮助开发者更好地理解和应用。总之,对于C#开发者来说,这个资源包是一个宝贵的参考资料,可以加速开发进程,提升代码质量。

    C#_类库查询手册

    《C# 类库查询手册》是一本专注于C#编程语言中类库使用的参考资料,它涵盖了C#编程的核心概念以及.NET框架中的各种类库。这本书旨在帮助开发者深入理解C#类库,提高编程效率,实现更高效、更稳定的应用程序开发。 ...

    httpclient 4.3 中文版

    1. **基于 HttpCore**:HttpClient 是基于 HttpCore 实现的客户端 HTTP 传输类库,这意味着它能够处理 HTTP 协议的基本层面,包括连接管理、请求序列化和响应解析等。 2. **传统 IO 模型**:它基于传统的阻塞式 I/...

    学习java开发应该了解的几个常用的基本核心类库

    以上这些类库构成了Java开发的基础,理解和熟练使用它们是每个Java程序员必备的技能。在实际开发中,根据需求,开发者还会引入其他的第三方库,如Spring、MyBatis、Apache Commons等,但掌握这些基本核心类库是构建...

    ASP.NET 类库

    1. **System.Web**: 这是ASP.NET中最基础的类库,包含了处理HTTP请求、响应的基本类,如HttpContext、HttpRequest、HttpResponse等。这些类提供了处理用户请求、发送响应、管理会话状态等核心功能。 2. **System....

    HttpClient 4.3教程.docx

    * HttpClient支持基本的HTTP协议,还支持HTTP-aware客户端程序,如web浏览器,Webservice客户端,以及利用或拓展HTTP协议的分布式系统。 HttpClient的优点 * 高度灵活和强大 * 提供了一个功能丰富的HTTP客户端库 *...

    HttpClient

    HttpClient是一个广泛使用的基于HttpCore的客户端HTTP传输类库,它提供了丰富的API来执行HTTP请求,处理HTTP响应,管理HTTP连接和处理HTTP状态。在本文中,我们将详细介绍HttpClient的核心知识点,包括基本概念、...

    HttpClient入门陆小马功钟浩.pdf

    以上知识点为HttpClient入门的基础内容,对于想要学习如何在Java中进行HTTP网络编程的人来说是必须掌握的基本技能。随着技术的发展,虽然4.0.1版可能不是现在最新的版本,但其核心的使用方法和API设计思路仍然具有...

    httpclient 4.5 所需的jar包 附带源码

    4. **commons-io-2.4.jar**:Apache Commons IO是Java IO操作的实用工具类库,包含了各种文件操作、流操作、I/O异常处理等功能,为HTTPClient提供便利的IO操作支持。 描述中还提到了一个名为`ClientSSL.java`的源码...

    httpclient模拟登陆

    1. **HTTPClient基本使用** - **导入依赖**:首先需要引入HTTPClient的相关类库,如`import org.apache.http.client.methods.HttpPost;`等。 - **创建HttpClient对象**:使用`DefaultHttpClient`或`...

    HttpClient 4 - 文件上传

    首先,我们需要了解HttpClient 4的基本用法。HttpClient 4依赖于几个关键的组件,包括`httpclient-4.0.jar`(核心客户端库)、`httpcore-nio-4.0.1.jar`和`httpcore-4.0.1.jar`(HTTP协议处理库),`commons-logging...

    javaSE 类库查询手册

    同时,HttpURLConnection和HttpClient等网络API的使用也会有所涉及。 6. **反射**:理解反射机制,它是Java动态性的重要体现。通过反射,可以在运行时获取类的信息,创建对象,调用方法,修改字段值等。 7. **异常...

Global site tag (gtag.js) - Google Analytics