Итак, я пришел к выводу, что 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, и мы не занимаемся всей краткостью, но это немного. Не говоря уже о банках до 700 КБ.
В любом случае, достаточно рассказать, я хотел посмотреть, какие впечатления у людей были с другими клиентскими библиотеками HTTP?
Я знаю: Jetty, hotpotato и AsyncHttpClient.
Это для использования на стороне сервера, меня больше всего интересует производительность для многих одновременных попыток и больших передач файлов.
Любые рекомендации?
PS Я знаю, что почтенный HttpClient 3.1 все еще существует, но я бы хотел использовать что-то, что поддерживалось.
Update
@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. Я уверен, что это моя вина, но на данный момент я действительно не хочу это выяснять.
Эй, я не собираюсь пренебрегать работой здесь, но я старался использовать HttpComponents с тех пор, как вышел 4.0, и это просто не работает для меня.