Apache HttpComponents的替代品?[已关闭]
因此,我得出的结论是,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,我们并不喜欢整个简洁性的东西,但这有点多。更不用说罐子高达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,它只是不适合我。