Какую библиотеку Java лучше всего использовать для HTTP POST, GET и т. Д. С точки зрения производительности, стабильности, зрелости и т. Д.? Есть ли одна конкретная библиотека, которая используется больше других?
Мои требования отправляют запросы HTTPS POST на удаленный сервер. Раньше я использовал пакет java.net. *, А также пакет org.apache.commons.httpclient. *. Оба сделали свою работу, но я хотел бы получить некоторые ваши мнения / рекомендации.
Я бы порекомендовал Apache HttpComponents HttpClient , преемник Commons HttpClient.
Я также рекомендую взглянуть на HtmlUnit. HtmlUnit - это «браузер без графического интерфейса пользователя для программ Java». http://htmlunit.sourceforge.net/
источник
Я несколько неравнодушен к Джерси . Мы используем 1.10 во всех наших проектах и не сталкивались с проблемами, которые не могли бы решить с его помощью.
Некоторые причины, почему мне это нравится:
По правде говоря, HTTPClient и Jersey очень похожи по реализации и API. Также существует расширение для Джерси, которое позволяет поддерживать HTTPClient.
Некоторые примеры кода с Jersey 1.x: https://blogs.oracle.com/enterprisetechtips/entry/consuming_restful_web_services_with
http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/
HTTPClient с клиентом из Джерси: https://blogs.oracle.com/PavelBucek/entry/jersey_client_apache_http_client
источник
Я согласен, что httpclient - это что-то вроде стандарта, но я думаю, вы ищете варианты, поэтому ...
Restlet предоставляет http-клиент, специально разработанный для взаимодействия с веб-сервисами Restful.
Пример кода:
Client client = new Client(Protocol.HTTP); Request r = new Request(); r.setResourceRef("http://127.0.0.1:8182/sample"); r.setMethod(Method.GET); r.getClientInfo().getAcceptedMediaTypes().add(new Preference<MediaType>(MediaType.TEXT_XML)); client.handle(r).getEntity().write(System.out);
См. Http://www.restlet.org/ для получения более подробной информации.
источник
Хочу упомянуть клиентскую библиотеку Ning Async Http . Я никогда не использовал его, но мой коллега в восторге от него по сравнению с Apache Http Client, которым я всегда пользовался в прошлом. Мне было особенно интересно узнать, что он основан на Netty , высокопроизводительной среде асинхронного ввода-вывода, с которой я больше знаком и высоко ценю.
источник
Могу я порекомендовать вам corn-httpclient . Это просто, быстро и достаточно для большинства случаев.
HttpForm form = new HttpForm(new URI("http://localhost:8080/test/formtest.jsp")); //Authentication form.setCredentials("user1", "password"); form.putFieldValue("input1", "your value"); HttpResponse response = form.doPost(); assertFalse(response.hasError()); assertNotNull(response.getData()); assertTrue(response.getData().contains("received " + val));
зависимость от maven
<dependency> <groupId>net.sf.corn</groupId> <artifactId>corn-httpclient</artifactId> <version>1.0.0</version> </dependency>
источник
Мне нравится Google HTTP Java Client , потому что он также может работать на Android и App Engine.
источник