Tout ce que j'essaie de faire est de télécharger du JSON et de le désérialiser en objet. Je n'ai pas encore téléchargé le JSON.
Presque tous les exemples HttpClient que je peux trouver, y compris ceux du site Apache, ressemblent à quelque chose comme ...
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
public void blah() {
HttpClient client = new DefaultHttpClient();
...
}
Cependant, Netbeans me dit que DefaultHttpClient
c'est obsolète. J'ai essayé de rechercher sur Google DefaultHttpClient deprecated
et autant d'autres variantes que je peux penser et je ne trouve aucun résultat utile, donc il me manque évidemment quelque chose.
Quelle est la méthode Java7 correcte pour télécharger le contenu d'une page Web? N'y a-t-il pas vraiment de client Http décent dans le langage? Je trouve cela difficile à croire.
Ma dépendance Maven pour cela est ...
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>LATEST</version>
<type>jar</type>
</dependency>
DefaultHttpClient
n'est certainement pas obsolète. Quelle version avez-vous spécifiée dans votre POM?Réponses:
Importations pertinentes:
Usage:
EDIT (après la suggestion de Jules):
Comme la
build()
méthode renvoie unCloseableHttpClient
qui est-aAutoClosable
, vous pouvez placer la déclaration dans une instruction try-with-resources (Java 7+):la source
CloseableHttpClient
, que vous devez fermer après utilisation. Elle met en œuvreAutoCloseable
, de sorte que vous pouvez l' utiliser dans un essai avec des ressources-déclaration en Java 7+:try (CloseableHttpClient httpclient = ...) { ... }
.create()
méthode statique? Ou pouvons-nous simplement appelercreate()
chaque fois que nous en avons besoin? ... Btw,import org.apache.http.impl.client.HttpClientBuilder
pour tous ceux qui en ont besoin. [N'aime pas les réponses sans instructions d'importation. Ne vous inquiétez pas, j'ai toujours voté pour :)]À mon humble avis, la réponse acceptée est correcte mais manque un certain «enseignement» car il n'explique pas comment trouver la réponse. Pour toutes les classes obsolètes, regardez le JavaDoc (si vous ne l'avez pas, téléchargez-le ou allez en ligne ), il indiquera quelle classe utiliser pour remplacer l'ancien code. Bien sûr, cela ne vous dira pas tout, mais c'est un début. Exemple:
Maintenant , vous avez la classe à utiliser,
HttpClientBuilder
car il n'y a pas de constructeur pour obtenir un constructeur exemple , vous pouvez deviner qu'il doit y avoir une méthode statique au lieu:create
. Une fois que vous avez le constructeur, vous pouvez également deviner que, comme pour la plupart des constructeurs, il existe une méthode de construction , ainsi:Fermeture automatique:
Comme Jules l'a indiqué dans les commentaires, la classe retournée est implémentée
java.io.Closable
, donc si vous utilisez Java 7 ou supérieur, vous pouvez maintenant faire:L'avantage est que vous n'avez pas à vous occuper des finalement et des nulls.
Autres informations pertinentes
Assurez-vous également de lire sur le regroupement de connexions et de définir les délais d'expiration .
la source
Les exemples d'Apache utilisent ceci:
La classe
org.apache.http.impl.client.HttpClients
est là depuis la version 4.3.Le code pour
HttpClients.createDefault()
est le même que la réponse acceptée ici.la source
Il est devenu obsolète dans la version
4.3-alpha1
que vous utilisez en raison de laLATEST
spécification de version. Si vous jetez un oeil à la javadoc de la classe, il vous indique ce qu'il faut utiliser:HttpClientBuilder
.Dans la dernière version stable (
4.2.3
), leDefaultHttpClient
n'est pas encore obsolète.la source
Essayez
jcabi-http
, qui est un client HTTP Java fluide, par exemple:Consultez également ce billet de blog: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
la source
Je suggérerais d'utiliser la méthode ci-dessous si vous essayez de lire uniquement les données json.
la source
DefaultHttpClient
est obsolète et vous suggérez de l'utiliser dans votre réponse ...Utilisez HttpClientBuilder pour générer le HttpClient au lieu d'utiliser DefaultHttpClient
ex:
la source
new HttpClientBuilder()
et pasHttpClientBuilder.create()
?Vous pouvez ajouter la dépendance Maven suivante.
Vous pouvez utiliser l'importation suivante dans votre code java.
Vous pouvez utiliser le bloc de code suivant dans votre code java.
la source
C'est la solution que j'ai appliquée au problème que httpclient a abandonné dans cette version d'android 22
la source
Pour le problème d'origine, je vous demanderais d'appliquer la logique ci-dessous:
la source