HttpClient в java
Я хочу использовать простой HttpClient.
Однако, похоже, sun.net.www.http.HttpClient недоступен.
Кроме того, com.ibm.ws.http.HTTPConnection - похоже, больше поддерживает HTTP-сервер, а не клиент. Зачем? потому что, когда я создаю экземпляр HttpConnection, он имеет "getHttpResponse", к которому я должен писать.
В любом случае использовать IBM HttpConnection для HttpClient?
Или, есть ли какой-либо стандартный код httpClient, который я могу использовать?
Спасибо.
Ответы
Ответ 1
Многие люди используют Apache HTTPClient.
Взгляните на первые несколько глав его учебник, чтобы узнать, что вы ищете.
Если вы после чего-то простого, уже встроенного в Java, вы можете посмотреть HttpURLConnection, который вы можете использовать для сборки HTTP-запросы (пример). Если вам нужно сделать что-то большее, чем просто простые HTTP-запросы, HTTPClient - это, вероятно, путь.
Ответ 2
Я настоятельно рекомендую Unirest:
Unirest.post("http://httpbin.org/post")
.queryString("name", "Mark")
.field("last", "Polo")
.asString()
Ответ 3
Попробуйте jcabi-http, который действует как оболочка JDK HttpURLConnection
или Apache HttpClient:
String body = new JdkRequest("http://www.example.com")
.uri().queryParam("id", "123").back()
.method(Request.GET)
.fetch()
.body();
Проверьте это сообщение в блоге для получения дополнительной информации: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
Ответ 4
Существует еще один вариант использования google-http-java-client.
Эта библиотека предоставляет простой и гибкий API вместе с подключаемым подходом к использованию низкоуровневых HTTP-библиотек, таких как java.net.HttpURLConnection или Apache HTTP Client.
Пример кода для размещения контента с контентом из InputStream на определенный URL:
HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
HttpRequestFactory requestFactory = HTTP_TRANSPORT.createRequestFactory();
InputStream is = ...;
URL url = new URL(...);
String contentType = ...;
HttpRequest httpRequest = requestFactory.buildPostRequest(
new GenericUrl(url), new InputStreamContent(contentType, is)
);
HttpResponse execute = httpRequest.execute();
Ответ 5
Вам не нужен сторонний класс, просто используйте классы URL
и HttpURLConnection
java.
См. Пример здесь.
Ответ 6
Попробуйте API-интерфейс Apache HTTPClient, удобный для использования!
// Execute a GET with timeout settings and return response content as String.
Request.Get("http://somehost/")
.connectTimeout(1000)
.socketTimeout(1000)
.execute().returnContent().asString();