HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
HttpURLConnection是java的标准类
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient,更多使用 HttpClient 的应用可以参见http://wiki.apache.org/jakarta-httpclient/HttpClientPowered。HttpClient 项目非常活跃,使用的人还是非常多的。目前 HttpClient 版本是在 2005.10.11 发布的 3.0 RC4 。
HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,
HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。
推荐HttpClient!!
URLConnection
HTTPClient
Proxies and SOCKS
Full support in Netscape browser, appletviewer, and applications (SOCKS: Version 4 only); no additional limitations from security policies.
|
Full support (SOCKS: Version 4 and 5); limited in applets however by security policies; in Netscape can't pick up the settings from the browser.
|
Authorization
Full support for Basic Authorization in Netscape (can use info given by the user for normal accesses outside of the applet); no support in appletviewer or applications.
|
Full support everywhere; however cannot access previously given info from Netscape, thereby possibly requesting the user to enter info (s)he has already given for a previous access. Also, you can add/implement additional authentication mechanisms yourself.
|
Methods
Only has GET and POST.
|
Has HEAD, GET, POST, PUT, DELETE, TRACE and OPTIONS, plus any arbitrary method.
|
Headers
Currently you can only set any request headers if you are doing a POST under Netscape; for GETs and the JDK you can't set any headers. Under Netscape 3.0 you can read headers only if the resource was returned with a Content-length header; if no Content-length header was returned, or under previous versions of Netscape, or using the JDK no headers can be read.
|
Allows any arbitrary headers to be sent and received.
|
Automatic Redirection Handling
Yes.
|
Yes (as allowed by the HTTP/1.1 spec).
|
Persistent Connections
No support currently in JDK; under Netscape uses HTTP/1.0 Keep-Alive's.
|
Supports HTTP/1.0 Keep-Alive's and HTTP/1.1 persistence.
|
Pipelining of Requests
No.
|
Yes.
|
Can handle protocols other than HTTP
Theoretically; however only http is currently implemented.
|
No.
|
Can do HTTP over SSL (https)
Under Netscape, yes. Using Appletviewer or in an application, no.
|
No (not yet).
|
Source code available
No.
|
Yes.
|
分享到:
相关推荐
NULL 博文链接:https://xiaowei-qi-epro-com-cn.iteye.com/blog/1973295
在Android应用开发中,进行网络通信是常见的任务,其中两种主要的请求方式是使用`HttpURLConnection`和`HttpClient`。虽然两者都能实现HTTP通信,但它们在功能、使用方式和性能上存在一些区别。 首先,Apache ...
有两种常见的方法:一是使用`java.net.URLConnection`类,二是通过Apache HttpClient库。这篇文章将对比这两种方法,探讨它们的优缺点以及适用场景。 `java.net.URLConnection`是Java标准库中的一个类,可以直接...
【描述】Web Service Tester是一个针对Android 2.0平台的Eclipse工程,它演示了如何使用URLConnection和HttpClient两种方法来执行对WebService的GET和POST请求。这个工具对于开发者来说,是理解和实践网络通信的重要...
HttpClient 4.5版本是该库的一个稳定版本,相较于JDK自带的URLConnection,HttpClient提供了更多的优势和特性,特别适合于复杂的网络应用和爬虫开发。 1. **易用性**:HttpClient提供了丰富的API接口,使得创建HTTP...
3.javanet包下面是基于jdk自带的UrlConnection进行封装的。 前2个工具类支持插件式配置Header、插件式配置httpclient对象,这样就可以方便地自定义header信息、配置ssl、配置proxy等。 第三个虽然支持代理、ssl,...
它弥补了JDK内置的java.net包中URL和URLConnection类在HTTP客户端编程方面的不足,提供了更丰富和灵活的功能。HttpClient组件允许应用程序直接通过HTTP协议访问Web服务器上的资源,这对于RIA(Rich Internet ...
在Java编程语言中,我们可以使用多种方法来实现这一功能,其中URLConnection是Java标准库提供的一种网络通信接口,虽然HttpClient更为流行,但URLConnection在某些场景下依然具有实用性。下面我们将深入探讨...
根据提供的文件内容,我们可以梳理出关于HttpClient入门的相关知识点。 首先,HttpClient是一个开源工具,属于Apache组织,用于处理HTTP请求和响应。它不是一个浏览器,不涉及浏览器的客户端缓存等附加功能,它仅是...
在Android中,我们可以使用`AndroidHttpClient`,它是`HttpClient`的一个优化版本,更适合Android平台。 #### 1.1 配置HttpClient访问HTTPS(不验证证书) ```java // 创建HttpClient实例 HttpClient httpClient =...
在实际应用中,为了简化网络请求,开发者通常会使用第三方库,如Apache HttpClient、OkHttp或Java 7之后内置的HttpURLConnection API,这些库提供了更高级的功能和更好的性能。但是,理解URL和URLConnection的基础...
由于JDK内置的java.net.URL和URLConnection类在功能上可能不足以满足复杂的需求,Commons-HTTPClient 提供了更为丰富和灵活的功能。 HttpClient 支持HTTP 1.0和1.1协议的全部方法,包括GET、POST、PUT、DELETE、...
android与服务器间的通信开发,利用URL,URLConnection,HTTPClient开发
这时,`httpclient`库提供了一种解决方案,允许我们以非标准方式配置客户端,从而忽略证书校验错误。 `httpclient`是一个强大的Java库,用于执行HTTP请求,支持多种协议,包括HTTPS。在`httpclient-4.2.5.jar`这个...
本例子源码展示了如何利用Apache HttpClient库来实现这一功能,同时也对比了另一种常见的网络访问方式——URLConnection。以下是对这两个方法的详细解释。 首先,我们来看`HttpClient`的使用。Apache HttpClient是...
这时,我们可以创建自定义的`URLConnection`子类,或者使用第三方库如Apache HttpClient或OkHttp来增强功能。博客中提到的`WebUrlRequestBuilder.java`文件很可能就是这样一个工具,用于构建和管理网络请求,可能...
### 使用URL和URLConnection进行多线程下载的深入探讨 在现代互联网应用中,高效的数据传输和资源下载成为了提升用户体验的关键因素之一。对于大型文件的下载,传统的单线程下载方式往往无法充分利用网络带宽,尤其...
// 打开连接,URL.openConnection函数会根据URL的类型,返回不同的URLConnection子类的对象 HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); // 进行连接 connection.connect();...