Tudo o que estou tentando fazer é baixar JSON e desserializar para um objeto. Ainda não consegui baixar o JSON.
Quase todos os exemplos de HttpClient que posso encontrar, incluindo os do site apache, são parecidos com ...
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
public void blah() {
HttpClient client = new DefaultHttpClient();
...
}
No entanto, o Netbeans me diz que DefaultHttpClient
está obsoleto. Eu tentei pesquisar no Google DefaultHttpClient deprecated
e em tantas outras variações em que consigo pensar e não consigo encontrar resultados úteis, então obviamente estou perdendo alguma coisa.
Qual é a maneira correta do Java7 de baixar o conteúdo de uma página da web? Não existe realmente nenhum cliente Http decente como parte do idioma? Acho isso difícil de acreditar.
Minha dependência do Maven para isso é ...
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>LATEST</version>
<type>jar</type>
</dependency>
DefaultHttpClient
definitivamente não está obsoleto. Qual versão você especificou no seu POM?Respostas:
Importações relevantes:
Uso:
EDIT (após sugestão de Jules):
Como o
build()
método retorna aCloseableHttpClient
que é-aAutoClosable
, você pode colocar a declaração em uma instrução try-with-resources (Java 7+):fonte
CloseableHttpClient
, que você deve fechar após o uso. Ele implementaAutoCloseable
, assim você pode usá-lo em uma instrução try-with-recursos em Java 7+:try (CloseableHttpClient httpclient = ...) { ... }
.create()
método estático? Ou podemos simplesmente ligarcreate()
sempre que precisarmos de um? ... Aliás,import org.apache.http.impl.client.HttpClientBuilder
para quem precisa disso. [Não gosta de respostas sem instruções de importação. Não se preocupe, eu ainda votei :)]IMHO, a resposta aceita está correta, mas perde alguns 'ensinamentos', pois não explica como chegar à resposta. Para todas as classes obsoletas, observe o JavaDoc (se você não o tiver baixado ou online ), ele indicará qual classe usar para substituir o código antigo. Claro que não vai lhe contar tudo, mas isso é um começo. Exemplo:
Agora você tem a classe para usar,
HttpClientBuilder
como não há nenhum construtor para obter um construtor exemplo, você pode acho que deve haver um método estático em vez disso:create
. Depois de ter o construtor, você também pode supor que, para a maioria dos construtores, existe um método de construção , assim:AutoClosable:
Como Jules sugeriu nos comentários, a classe retornada é implementada
java.io.Closable
; portanto, se você usa o Java 7 ou superior, agora pode:A vantagem é que você não precisa lidar com finalmente e nulos.
Outras informações relevantes
Leia também sobre o pool de conexões e defina os tempos limite .
fonte
Exemplos do Apache usam isso:
A classe
org.apache.http.impl.client.HttpClients
existe desde a versão 4.3.O código para
HttpClients.createDefault()
é o mesmo que a resposta aceita aqui.fonte
Foi preterido na versão
4.3-alpha1
que você usa devido àLATEST
especificação da versão. Se você der uma olhada no javadoc da classe, diz-lhe o que usar em vez disso:HttpClientBuilder
.Na versão estável mais recente (
4.2.3
),DefaultHttpClient
isso ainda não foi preterido.fonte
Tente
jcabi-http
, que é um cliente Java HTTP fluente, por exemplo:Verifique também esta postagem do blog: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
fonte
Eu sugeriria o uso do método abaixo se você estiver tentando ler apenas os dados do json.
fonte
DefaultHttpClient
foi descontinuado e você sugere usá-lo em sua resposta ... #Use HttpClientBuilder para criar o HttpClient em vez de usar DefaultHttpClient
ex:
fonte
new HttpClientBuilder()
e nãoHttpClientBuilder.create()
?Você pode adicionar a seguinte dependência do Maven.
Você pode usar a seguinte importação no seu código java.
Você pode usar o seguinte bloco de código no seu código java.
fonte
Esta é a solução que apliquei ao problema que o httpclient reprovou nesta versão do android 22
fonte
Para o problema original, solicitei que você aplique abaixo da lógica:
fonte