Apache HttpClient 是一个完善的 HTTP 客户端。他提供了对 HTTP 协议的全面支持,可以使用 HTTP
GET 和 HTTP POST。
1、以下列出的是 HttpClient 提供的主要的功能。
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等
2、 一般使用模式:
(1) 创建一个 HttpClient 的实例或者现有实例的引用。
(2) 实例化新 HTTP 方法,比如 PostMethod 或 GetMethod。
(3) 设置 HTTP 参数名称/值。
(4) 使用 HttpClient 执行 HTTP 调用。
(5) 处理 HTTP 相应。
Get 和 Post 方法的区别,get 方法的参数/值是作为 URL 的一部分来传递的而 Post 方法是将参数作为请
求主题的一部分来传递的。
要使用 HttpClient 执行 HTTP POST 调用,必须通过一个 HttpPost 实例调用 HttpClient 的 execute()
方法。当执行 HTTP POST 调用时,通常将编码到 URL 中的名称/值对参数作为 HTTP 请求的一部分传递。
要通过 HttpClient 实 现 此 目 的 , 必 须 创 建 一 个 包 含 NameValuePair 对象实例的列表,然后使用
UrlEncodedFormEntity 对 象 包 装 该 列 表 。 NameValuePair 包 装 了 一 个 名 称 / 值 组 合 ,
UrlEncodedFormEntity 类知道如何编码适合 HTTP 调用(通常为 POST 调用)的 NameValuePair 对
象 列 表 。 创 建 UrlEncodedFormEntity 之 后 , 可 以 将 HttpPost 的 实 体 类 型 设 置 为
UrlEncodedFormEntity,
然后呢执行该请求。
处理异常:
在使用 HTTP 服务时,可能遇到多种类型的异常,包括传输异常、协议异常和超时。
传输异常的发生可能有多种原因,但对于移动设备,最可能的情况是网络连接较差、协议异常发生在
HTTP 协议层,包括身份验证错误、无效的 cookie 等。对于 HTTP 调用,超时包含两个方面:连接超时
和套接字超时。如果 HttpClient 无法连接到 HTTP 服务器(例如,如果 URL 不正确或服务器不可用),
就会发生连接超时。如果 HttpClient 未在既定的时期内收到相应,则可能发生套接字超时。换句话说 ,
HttpClient 可以连接到服务器,但服务器未在所分配的时限内返回相应,就可能发生套接字超时。
HttpClient 处理传输异常的方式是,检测传输问题并重新尝试发出请求。协议异常一般会在开发期间大
量发生。超时是由开发人员自己来处理的。处理两种超时类型的一种简单有效的方法是,使用 try/catch
包装 HTTP 请求的 execute()方法,然后在出现请求失败时重试。
解决多线程问题:
在实际的应用中,开发者应该为整个应用程序创建一个 HttpClient,并将其用于所有 HTTP 通信。除
了将一个 HttpClient 用于所有 HTTP 请求,还应该注意在通过同一个 HttpClient 同时发出多个请求
时可能发生的多线程问题。
由于每个 Android 应用程序都具有一个关联的应用程序对象,在默认情况下,如果未定义自定义应用
程序对象,Android 将使用 android.app.Application。一个应用程序始终只有一个应用程序对象,
所有组件都可以访问它。例如,可以从活动类调用 getApplication()来获取应用程序对象。因为应用
程序是独立的且始终可用,所以可以扩展该类并创建我们自己的 HttpClient。然后为应用程序中的所
有组件提供一个访问器方法来获得 HttpClient。