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,但我们不是很精简,但这有点多。更不用说jars了700KB。

无论如何,足够的抱怨,我想看看人们对其他HTTP客户端库有什么样的体验?

我知道的是:JettyhotpotatoAsyncHttpClient

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

有什么建议吗?

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,但这对我不起作用。

德米特里:

回答我自己的问题,由于某种原因该问题复活了。

我最后写了一些简单的包装java.net.HttpURLConnection,看来自从我上次认真考虑以来,已经走了很长一段路。

Apache HttpComponents很棒,但是对于简单的任务可能会显得过分杀伤力。另外,至少在我的情况下,HUC明显更快(大多数情况下是单线程的,在重负载下没有进行任何测试)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章