Все, что я пытаюсь сделать, это загрузить JSON и десериализовать его в объект. Я еще не дошел до загрузки JSON.
Почти каждый пример HttpClient, который я могу найти, в том числе на сайте apache, выглядит примерно так ...
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
public void blah() {
HttpClient client = new DefaultHttpClient();
...
}
Тем не менее, Netbeans говорит мне, что DefaultHttpClient
это устарело. Я пробовал поискать в Google DefaultHttpClient deprecated
и столько других вариантов, сколько я могу придумать, и не могу найти никаких полезных результатов, поэтому я явно что-то упускаю.
Какой правильный способ загрузки содержимого веб-страницы на Java7? Неужели нет приличного Http-клиента как части языка? Я считаю, что трудно поверить.
Моя зависимость Maven для этого ...
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>LATEST</version>
<type>jar</type>
</dependency>
DefaultHttpClient
определенно не устарела. Какую версию вы указали в своем POM?Ответы:
Соответствующий импорт:
Использование:
РЕДАКТИРОВАТЬ (после предложения Жюля):
Поскольку
build()
метод возвращает ,CloseableHttpClient
который является разновидностьюAutoClosable
, вы можете разместить объявление в примерочной с-ресурсами заявлении (Java 7+):источник
CloseableHttpClient
, которое вы должны закрывать после использования. Он реализуетAutoCloseable
, так что вы можете использовать его в заявлении примерочных с-ресурсов в Java 7+:try (CloseableHttpClient httpclient = ...) { ... }
.create()
статическим методом? Или мы можем просто позвонить,create()
когда нам это понадобится? ... Кстати,import org.apache.http.impl.client.HttpClientBuilder
для тех, кто в этом нуждается. [Не любит ответы без импортных заявлений. Не волнуйтесь, я все еще проголосовал :)]ИМХО принятый ответ верен, но пропускает некоторое «учение», так как не объясняет, как придумать ответ. Для всех устаревших классов посмотрите на JavaDoc (если у вас его нет, либо загрузите, либо подключитесь к Интернету ), он подскажет, какой класс использовать для замены старого кода. Конечно, это не скажет вам всего, но это только начало. Пример:
Теперь у вас есть класс , чтобы использовать,
HttpClientBuilder
как нет конструктора , чтобы получить строитель экземпляр вы можете догадаться , что должен быть статический метод вместо:create
. Если у вас есть сборщик, вы также можете догадаться, что, как и для большинства сборщиков, существует метод сборки , таким образом:AutoClosable:
Как намекал Жюль в комментариях, возвращаемый класс реализует
java.io.Closable
, поэтому, если вы используете Java 7 или выше, теперь вы можете сделать:Преимущество в том, что вам не нужно иметь дело с окончательно и нулевыми значениями.
Другая важная информация
Также не забудьте прочитать о пуле подключений и установить время ожидания .
источник
Примеры от Apache используют это:
Класс
org.apache.http.impl.client.HttpClients
существует с версии 4.3.Код для
HttpClients.createDefault()
такой же, как принятый ответ здесь.источник
Это устарело в версии,
4.3-alpha1
которую вы используете из-заLATEST
спецификации версии. Если вы посмотрите на Javadoc класса, он говорит вам , что нужно использовать вместо:HttpClientBuilder
.В последней стабильной версии (
4.2.3
)DefaultHttpClient
это не рекомендуется.источник
Попробуйте
jcabi-http
, который является свободным клиентом Java HTTP, например:Проверьте также этот блог: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
источник
Я бы предложил использовать метод ниже, если вы пытаетесь читать только данные JSON.
источник
DefaultHttpClient
он устарел, и вы предлагаете использовать его в своем ответе ...Используйте HttpClientBuilder для создания HttpClient вместо использования DefaultHttpClient
например:
источник
new HttpClientBuilder()
и нетHttpClientBuilder.create()
?Вы можете добавить следующую зависимость Maven.
Вы можете использовать следующий импорт в свой код Java.
Вы можете использовать следующий блок кода в вашем коде Java.
источник
Это решение, которое я применил к проблеме, которую httpclient устарел в этой версии Android 22
источник
Для первоначального выпуска я бы попросил вас применить приведенную ниже логику:
источник