建瓯市建设银行网站,如何搭建自己的网站服务器,专业建设网站制作,十里河网站建设HttpClient HttpClient#xff0c;是一款强大的支持HTTP协议的客户端编程工具包。主要功能在于提供一种有效、最新且功能丰富的方式来执行HTTP请求和响应。HttpClient与浏览器有着本质的区别#xff0c;它并不会缓存内容#xff0c;也不会处理嵌入在HTML页面中的代码或是错误… HttpClient HttpClient是一款强大的支持HTTP协议的客户端编程工具包。主要功能在于提供一种有效、最新且功能丰富的方式来执行HTTP请求和响应。HttpClient与浏览器有着本质的区别它并不会缓存内容也不会处理嵌入在HTML页面中的代码或是错误输入更不会对不符合HTTP标准的行为进行处理。 此外HttpClient还支持多种HTTP协议的方法包括但不限于GET、POST、PUT以及HEAD等。同时它还具备对HTTPS和代理服务器的支持。这使得HttpClient成为了目前Internet上使用最为广泛且重要的协议之一。
优点缺点HttpURLConnectionjdk自带、原始、简单无连接池、性能与效率相对较低、高级功能不方便使用一般来说不建议使用。java.net.http.HttpClientjdk11正式启用自带HttpClient代替之前比较旧的HttpURLConnectionOracle收购后大多数企业使用的都还是jdk8使用的可能性比较小HttpClient1.支持连接池、多线程2.从官方demo可以看出httpClient只创建一次被多个线程复用3.httpClient4.3后超时配置到request级1.由于社区活跃度的问题Android已经去掉了HttpClient该用了okHttp2.使用起来需要自己封装3.需要手动关闭httpclient.close()okHttp1.性能方面与httpclient类似2.不需要手动关闭3.支持http24.Android4.4开始换成okHttp1.使用时需要自己封装2.new OkHttpClient()每次使用都需要new出来(从晚上看到说作者可能是考虑可以忽略此开销)3.超时配置在client级没到每个request这个可能与第2点同原因4.好像底层实现了多线程的支持没深入研究RetrofitRetrofit是Square出的基于OKHttp封装的一套RESTful网络请求框架1.restfull风格2.基于接口编程3.分装度高基于注解4.无须手动关闭1.与okHttp类似new Retorfit.Builder()每次使用都要new出来(可以考虑自己实现单例网上也有些demo)RestTemplateRestTemplate是Spring提供的用于访问Rest服务的客户端RestTemplate提供了多种便捷访问远程Http服务的方法能够大大提高客户端的编写效率1.RestTemplate只有初始化配置没有连接池2.RestTemplate默认的http是HttpURLConnectionopenFeign1.可插拔的注解支持包括Feign注解和JAX-RS注解2.支持可插拔的HTTP编码器和解码器(GsonJacksonSaxJAXBJAX-RSSOAP)3.支持HTTP请求和响应的压缩4.支持多种客户端:JDK URLConnection、apache httpclient、okhttp、ribbon默认的http是HttpURLConnection
1、HttpURLConnection
HttpURLConnection是java的标准类什么都没封装用起来太原始不方便比如重访问的自定义以及一些高级功能等。
2、java.net.http.HttpClient
jdk11正式启用自带HttpClient代替之前比较旧的HttpURLConnection。其实从java9的jdk.incubator.httpclient模块迁移到java.net.http模块包名由jdk.incubator.http改为java.net.http。
3、Apache HttpClient
在Android中AndroidSDK中集成了Apache的HttpClient模块HttpClient就是一个增强版的HttpURLConnection它只是关注于如何发送请求、接收响应以及管理HTTP连接。如果做好封装或者使用android-async-httpAfinalXutils也能挺简单的完成http请求但是Android6.0谷歌因为和Apache更新难以同步等原因吧已经放弃了HttpClient改于了okHttp。 //httpclient官网示例 ClientMultiThreadedExecution.javaPoolingHttpClientConnectionManager cm new PoolingHttpClientConnectionManager();cm.setMaxTotal(100);CloseableHttpClient httpclient HttpClients.custom().setConnectionManager(cm).build();.........} finally {httpclient.close();}//超时配置到Request级RequestConfig requestConfig RequestConfig.copy(defaultRequestConfig).setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).setProxy(new HttpHost(myotherproxy, 8080)).build();4、okHttp
OkHttp 是 Square 公司开源的针对 Java 和 Android 程序封装的一个高性能 http 请求库。OKHttp 类似于 HttpUrlConnection 是基于传输层实现应用层协议的网络框架。 而不止是一个 Http 请求应用的库。
okHttp的优势
链接复用Response 缓存和 Cookie默认 GZIP请求失败自动重连DNS 扩展Http2/SPDY/WebSocket 协议支持默认情况下OKHttp会自动处理常见的网络问题像二次连接、SSL的握手问题。从Android4.4开始HttpURLConnection的底层实现采用的是okHttp.
5、Retrofit
Retrofit 是 Square 公司出品的默认基于 OkHttp 封装的一套 RESTful 网络请求框架RESTful 可以说是目前流行的一套 api 设计的风格并不是标准。Retrofit 的封装可以说是很强大里面涉及到一堆的设计模式你可以通过注解直接配置请求你可以使用不同的 http 客户端虽然默认是用 OKhttp 可以使用不同 Json Converter 来序列化数据同时提供对 RxJava 的支持使用 Retrofit OkHttp RxJava Dagger2 可以说是目前比较 潮 的一套框架但是需要有比较高的门槛。
Retrofit retrofit new Retrofit.Builder().baseUrl(API_URL).addConverterFactory(GsonConverterFactory.create()).build();6、RestTemplate
RestTemplate是 Spring 提供的用于访问Rest服务的客户端 RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
7、OpenFeign
可插拔的注解支持包括Feign注解和JAX-RS注解。支持可插拔的HTTP编码器和解码器GsonJacksonSaxJAXBJAX-RSSOAP。支持Hystrix和它的Fallback。支持Ribbon的负载均衡。支持HTTP请求和响应的压缩。灵活的配置基于 name 粒度进行配置支持多种客户端JDK URLConnection、apache httpclient、okhttpribbon支持日志支持错误重试url支持占位符可以不依赖注册中心独立运行
总结
在你还在纠结选择apache httpclient时Android已经不用它了改用okhttp了当你还在纠结选择apache httpclient还是okhttp时Square已经出了Retrofit网友已经在说既然你都用了okhttp为何不直接使用Retrofit
总的来说技术变化更新都比较快得跟上技术的发展。一般来说没有使用springcloud话可以选择Retrofit如果使用了springcloud可以使用OpenFeignokHttp。 小舟从此逝江海寄余生. --苏轼《临江仙》