gpt4 book ai didi

java - Apache HttpComponents 的替代品?

转载 作者:IT老高 更新时间:2023-10-28 20:32:42 24 4
gpt4 key购买 nike

因此,我得出的结论是 Apache HttpComponents 4 是我遇到过的最过度使用的 API 之一。看起来应该很简单的事情需要数百行代码(我仍然不确定资源是否得到正确清理)。

此外,它还希望我做以下事情:

List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("q", "httpclient"));
qparams.add(new BasicNameValuePair("btnG", "Google Search"));
qparams.add(new BasicNameValuePair("aq", "f"));
qparams.add(new BasicNameValuePair("oq", null));
URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search",
URLEncodedUtils.format(qparams, "UTF-8"), null);

哪个,只是……不。我知道它是 Java,我们对整个简洁性并不感兴趣,但这有点多。更不用说这些 jar 文件高达 700KB。

不管怎样,废话不多说,我想看看人们对其他 HTTP 客户端库有什么样的体验?

我知道的有:Jetty , hotpotato , 和 AsyncHttpClient .

这是供服务器端使用的,我最感兴趣的是许多并发获取和大文件传输的性能。

有什么建议吗?

PS 我知道古老的 HttpClient 3.1 仍然存在,但我想使用受支持的东西。

更新

@oleg:这是文档的建议:

    HttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet("http://www.apache.org/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
try {
instream.read();
} catch (IOException ex) {
throw ex;
} catch (RuntimeException ex) {
httpget.abort();
throw ex;
} finally {
try { instream.close(); } catch (Exception ignore) {}
}
}
} finally {
httpclient.getConnectionManager().shutdown();
}

在使用 ThreadSafeClientConnManager 时使用实体内容时,我仍然会遇到意外错误。我确定这是我的错,但在这一点上,我真的不想弄清楚。

嘿,我并不是要贬低任何人在这里的工作,但自从 4.0 发布以来,我一直在努力使用 HttpComponents,但它对我不起作用。

最佳答案

HttpClient API 的复杂性只是反射(reflect)了其问题域的复杂性。与流行的误解相反,HTTP 是一个相当复杂的协议(protocol)。作为一个低级传输库 HC 4.0 API 主要针对性能和灵 active 而不是简单性进行了优化。很遗憾你无法弄清楚,但就这样吧。欢迎您使用最适合您需求的任何库。我个人喜欢Jetty HttpClient很多。这是一个很好的选择,可能对您更有效。

关于java - Apache HttpComponents 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5415111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com