J'essaye de trouver l'équivalent Java de Groovy:
String content = "http://www.google.com".toURL().getText();
Je veux lire le contenu d'une URL en chaîne. Je ne veux pas polluer mon code avec des flux et des boucles tamponnés pour une tâche aussi simple. J'ai regardé dans HttpClient d'Apache mais je ne vois pas non plus d'implémentation en une ou deux lignes.
Réponses:
Maintenant qu'un certain temps s'est écoulé depuis que la réponse originale a été acceptée, il existe une meilleure approche:
Si vous voulez une implémentation légèrement plus complète, qui ne soit pas une seule ligne, procédez comme suit:
la source
Scanner#close()
plus tard.String result = scanner.hasNext() ? scanner.next() : "";
gérer cela.Cette réponse fait référence à une ancienne version de Java. Vous voudrez peut-être regarder la réponse de ccleve.
Voici la manière traditionnelle de procéder:
Comme @extraneon l'a suggéré, ioutils vous permet de le faire d'une manière très éloquente et toujours dans l'esprit Java:
la source
getText
, passer la chaîne d'URL en tant que paramètre et avoir une ligne unique:String content = URLConnectionReader.getText("http://www.yahoo.com/");
Ou utilisez simplement Apache Commons
IOUtils.toString(URL url)
, ou la variante qui accepte également un paramètre d'encodage.la source
IOUtils.toString(URL)
c'est obsolète.IOUtils.toString(URL url, String encoding)
est préféré.IOUtils.toString(url, (Charset) null)
pour atteindre un résultat similaire.Maintenant que plus de temps s'est écoulé, voici un moyen de le faire en Java 8:
la source
http://www.worldcat.org/webservices/catalog/search/opensearch
Web, je n'obtiens que les deux premières lignes de xml.Il existe un moyen encore meilleur à partir de Java 9:
Comme l'exemple original groovy, cela suppose que le contenu est encodé en UTF-8. (Si vous avez besoin de quelque chose de plus intelligent que cela, vous devez créer une URLConnection et l'utiliser pour comprendre l'encodage.)
la source
getClass().getResourceAsStream(...)
pour ouvrir des fichiers texte à l'intérieur du fichier jar.Exemple supplémentaire utilisant Guava:
la source
Si vous avez le flux d'entrée (voir la réponse de Joe), considérez également ioutils.toString (flux d'entrée).
http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString(java.io.InputStream )
la source
Ce qui suit fonctionne avec Java 7/8, des URL sécurisées et montre comment ajouter un cookie à votre demande également. Notez qu'il s'agit principalement d'une copie directe de cette autre excellente réponse sur cette page , mais a ajouté l'exemple de cookie, et une clarification en ce sens qu'il fonctionne également avec des URL sécurisées ;-)
Si vous devez vous connecter à un serveur avec un certificat non valide ou un certificat auto-signé, cela générera des erreurs de sécurité, sauf si vous importez le certificat. Si vous avez besoin de cette fonctionnalité, vous pouvez envisager l'approche détaillée dans cette réponse à cette question associée sur StackOverflow.
Exemple
les sorties
Code
la source
Voici la belle réponse de Jeanne, mais enveloppée dans une fonction bien rangée pour les marionnettes comme moi:
la source
URL vers chaîne en Java pur
Exemple d'appel
la mise en oeuvre
Vous pouvez utiliser la méthode décrite dans cette réponse, sur Comment lire une URL vers un InputStream et la combiner avec cette réponse sur Comment lire InputStream vers une chaîne .
Le résultat sera quelque chose comme
Avantages
C'est du pur java
Il peut être facilement amélioré en ajoutant différents en-têtes (au lieu de passer un objet nul, comme le fait l'exemple ci-dessus), l'authentification, etc.
La gestion des commutateurs de protocole est prise en charge
la source