En httpclient ce qui est la façon la plus élégante / correcte pour tourner HttpEntity à une chaîne?
-
19-09-2019 - |
Question
Je récupère une page Web en utilisant Apache Java HttpComponents bibliothèque . Après avoir connecté le résultat que je reçois est un HttpEntity
qui a une méthode getContent()
qui retourne un InputStream
et possède également une writeTo()
méthode qui écrit à un OutputStream.
Je veux tourner le résultat dans une chaîne pour extraire des informations. Ce qui est le plus élégant (et sûr) façon de le faire?
Quelques solutions possibles:
- Ecrire à un
ByteArrayOutputStream
puis convertir ces octets en une chaîne avec un constructeur String - utiliser InputStreamReader pour lire directement à partir du flux, et mis dans un StringBuilder
Ces deux se sentent un peu laid. Recommanderiez-vous le choix d'un de ces ou autre chose?
La solution
Qu'en est-il (pseudo):
BasicResponseHandler handler = new org.apache.http.impl.client.BasicResponseHandler ();
String str = httpClient.execute(request, handler);
Vous auriez à gérer les exceptions sur votre propre dans ce cas.
Autres conseils
System.out.println (EntityUtils.toString (httpResponse.getEntity ()));
Il peut être laid, mais je pense que c'est la seule façon de le faire. Vous pouvez utiliser IOUtils.toString () des communes-IO mais sans avoir à écrire votre propre code.