Je vais chercher une page Web en utilisant le Apache httpcomponents Java library. Après avoir connecté le résultat, je reçois un HttpEntity
qui a une méthode getContent()
qui renvoie un InputStream
et a également une méthode writeTo()
qui écrit dans un OutputStream.Dans httpclient, quelle est la manière la plus élégante/correcte de transformer HttpEntity en chaîne?
Je veux transformer le résultat en une chaîne pour extraire des informations. Quelle est la manière la plus élégante (et la plus sûre) de le faire?
Quelques solutions possibles:
- Ecrire à un
ByteArrayOutputStream
puis convertir ces octets en une chaîne avec un constructeur String - utilisation InputStreamReader à lire directement à partir du flux, et mis dans un StringBuilder
Les deux se sentent un peu moche. Recommanderiez-vous de choisir l'un d'entre eux ou quelque chose d'autre?
Je pense que ceci est la réponse corrrect, la bibliothèque fournit la classe EntityUtils pour exactement cette raison –
Le problème avec cette approche est que si vous avez déjà nettoyé les ressources en appelant le httpResponse.close() et que vous voulez obtenir la représentation sous forme de chaîne de l'entité ailleurs, en utilisant le code ci-dessus provoquera le lancement d'une exception "java.net.SocketException: socket closed". –