Skip to content

HttpClient

Calvin edited this page Nov 13, 2013 · 10 revisions

##Overview HttpClient有三种选择:

  1. JDK自带的HttpURLConnection,貌似在大多数场景下都已足够使用。
  2. Apache HttpClient,多了一些功能,比如设定最大连接池,Cookies与认证的功能更强等等。
  3. Jersey的Restful Client和 Spring的RestTemplate。

对于很Restful的服务端,Jersey/Spring的Restful Client能更好的打交道,比如发送和读取Restful应用常用的参数,转换json格式的数据等等。

如果是简单Http请求,可以直接使用HttpURLConnection, 够简单,不需要引入额外依赖包。

但HttpURLConnection控制Keep-Alive长连接不方便,还有其他进一步的需求时,换用Apache HttpClient。

##Apache Http Client 在showcase的RemoteContentServlet, 演示了多线程安全的,使用了ConnectionPool的Apache HttpClient,并演示了如何设置SocketTimeout。

JDK HttpConnectionURL

同样在showcase的RemoteContentServlet中演示,内部应该也用了连接池,只不过没有最大数量的限制。

缺陷是长连接只能JVM全局统一配置, 系统变量 http.keepAlive ,默认为true,http.maxConnections,每个默认为5,是每个destination 的最大连接数。

##Spring RestTemplate/Jersey Client 简单情形下,直接用Spring自带RestTemplate即可,见Spring Restful章节。 当觉得不够用时,可尝试使用Jersey Client, 见Jersey章节。

Clone this wiki locally