首先,我不想在这里引发任何争端。我相当熟悉Jersey,但几乎没有使用过httpclient。
jersey-client和Apache的httpclient之间有哪些关键区别?它们各自的优势在哪些方面?是否有好的比较表格?哪个更适用于处理大文件(比如2048 MB)?
非常感谢您的评论!
首先,我不想在这里引发任何争端。我相当熟悉Jersey,但几乎没有使用过httpclient。
jersey-client和Apache的httpclient之间有哪些关键区别?它们各自的优势在哪些方面?是否有好的比较表格?哪个更适用于处理大文件(比如2048 MB)?
非常感谢您的评论!
HttpUrlConnection
作为默认后端。Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/path");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
使用Apache Http Client后端的Jersey示例:
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);
URLConnectionClientHandler
。HttpUrlConnection
的实现难以维护和扩展。HttpUrlConnection
有些相似。4.1版本包含大量性能增强,比其同类表现更好HttpUrlConnection
也具有内部池,但您没有工具来自定义何时进行池化,也没有监视设施来检查池状态。请记住,如果您有适当的com.sun.jersey.api.client.ClientHandler
实现,还可以使用其他后端(例如非阻塞客户端)与Jersey一起使用。
HttpUrlConnection
,这是处理大文件时不好的选择,因为它会将文件映射到内存中,导致性能下降。我不确定是否完全同意 Jersey 只是一个 REST API 客户端的说法。Jersey 客户端也是 HTTP 客户端。你可以使用所有流,但是默认情况下它确实使用 HttpUrlConnection 进行封装。也许我还有什么不理解的地方...? - carlspringjersey-apache-client4
似乎没有足够新的版本。另外,你关于Client client = new Client(new ApacheHttpClient4Handler...)
部分的代码是错误的或已经过时了。你觉得能否更新一下呢?非常感谢! - carlspring