-
Notifications
You must be signed in to change notification settings - Fork 2.9k
HttpClient
Calvin Xiao edited this page Nov 15, 2013
·
10 revisions
##Overview HttpClient有三种选择:
- JDK自带的HttpURLConnection,貌似在大多数场景下都已足够使用。
- Apache HttpClient,多了一些功能,比如设定最大连接池,Cookies与认证的功能更强等等。
- 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。
同样在showcase的RemoteContentServlet中演示,内部应该也用了连接池,只不过没有最大数量的限制。
缺陷是长连接只能JVM全局统一配置, 系统变量 http.keepAlive ,默认为true,http.maxConnections,每个默认为5,是每个destination 的最大连接数。
##Spring RestTemplate/Jersey Client 简单情形下,直接用Spring自带RestTemplate即可,见Spring Restful章节。 当觉得不够用时,可尝试使用Jersey Client, 见Jersey章节。