HttpURLConnection和httpclient比较

 

A Comparison of java.net.URLConnection and HTTPClient

Since java.net.URLConnection and HTTPClient have overlapping functionalities, the question arises of why would you use HTTPClient. Here are a few of the capabilites and tradeoffs.

Note that if you're running an applet, then things depend on which browser you're running under, as the browser provides the actual client implementation used by URLConnection; therefore the following just lists the differences as compared to Sun's http client (which is the default client used by URLConnection in applications).

 

URLConnection

HTTPClient

Methods

Only HEAD, GET, POST, PUT, DELETE, TRACE and OPTIONS.

Has HEAD, GET, POST, PUT, DELETE, TRACE and OPTIONS, plus any arbitrary method, such as those from WEBDav and IPP.

Response Codes

The response code, headers, and body can only be read if the response code was less than 400 - for any 4xx or 5xx response code, you only get IOException's when trying to get any response info.

The response code, all headers, and the body can always be read normally.

Proxies and SOCKS

Full support (SOCKS: Version 4 only)

Full support (SOCKS: both version 4 and 5)

Authorization

Support for Basic and an early version of Digest in JDK 1.2 or later, only. The current version of Digest authentication (which is the one supported by most servers) is not supported, and due to a bug of theirs they won't even recognize the digest info returned by Apache.

Support for Basic and Digest Authentication; other schemes can be added.

Cookies

No.

Yes.

True request output streams

No - all data is fully buffered before it is sent.

Yes - HttpOutputStream will stream directly to the socket.

True response input streams

Under JDK 1.2, yes; under JDK 1.3 only if the response is not sent using the chunked encoding (this excludes most server-push responses).

Yes.

Persistent Connections

HTTP/1.0 Keep-Alive's in JDK 1.1 and JDK 1.2; JDK 1.3 has HTTP/1.1 persistence.

Supports HTTP/1.0 Keep-Alive's and HTTP/1.1 persistence.

Pipelining of Requests

No.

Yes.

Can set Timeouts

No.

Yes.

Can handle protocols other than HTTP

Yes (e.g. ftp, gopher, mailto, and file are provided)

No.

Can do HTTP over SSL (https)

Appropriate SSL package (such as JSSE) which provides an appropriate client must be installed.

Patches are available for various free and commercial SSL packages

Source code available

No.

Yes.

 

 

某网友做过两个的性能测试,结果如下

use httpurlconnection: 47

use httpclient: 641

 

http://wj98127.javaeye.com/blog/617014

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值