car*_*ing 49 java apache-commons-httpclient apache-httpclient-4.x jersey-client
首先,我不是想在这里开始一场火焰战争.我非常了解泽西岛,但很少使用httpclient.
jersey-client和Apache的httpclient之间的主要区别是什么?哪个区域比另一个好?在某处有一个很好的比较图表吗?对于较大的文件(比如2048 MB),哪一个表现更好?
非常感谢您的评论!
Jk1*_*Jk1 78
这两件事可能不应该直接比较.Jersey是一个REST客户端,具有完整的JAX-RS实现,简洁流畅的API和强大的过滤器堆栈.Apache Http Client是一个HTTP客户端,非常适合管理超时,复杂代理路由和连接轮询等低级细节.它们作用于协议栈的不同级别.当您使用Jersey时,总会涉及某种HTTP客户端后端.如果没有明确后端,Jersey将HttpUrlConnection
用作默认后端.
泽西与HttpUrlConnection后端示例:
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/path");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
Run Code Online (Sandbox Code Playgroud)
泽西使用Apache Http Client后端示例:
HttpClient apacheClient = HttpClientBuilder.create().build();
Client client = new Client(new ApacheHttpClient4Handler(apacheClient,
new BasicCookieStore(),
true));
WebResource webResource = client.resource("http://localhost:8080/path");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
Run Code Online (Sandbox Code Playgroud)
请注意最后一个示例中Handler的用法.这是泽西岛的一个关键整合抽象,可以整合和利用各种后端.第一个例子URLConnectionClientHandler
深入引擎盖下.
谈到性能和功能,将Apache Http Client与Jersey进行比较毫无意义.人们可能想在这里比较不同的泽西后端,因为泽西岛本身只是一个包装API.我想根据自己的经验强调HttpUrlConnection和Apache Http Client之间的一些关键差异:
HttpURLConnection的
HttpUrlConnection
基于实现的实现难以维护和扩展.Apache Http客户端
HttpUrlConnection
.版本4.1包含许多性能增强,并且执行方式比对应版本更好HttpUrlConnection
也有内部池,但你有没有工具来定制什么或何时游泳池,没有监控设施,检查池状态.请记住,它也可以使用其它后端(例如,对于非阻塞客户端)与新泽西州,如果你有一个适当的com.sun.jersey.api.client.ClientHandler
执行.