Quelle est la méthode recommandée pour obtenir la réponse HTTP en tant que Chaîne de caractères lors de l'utilisation d'Apache HTTP du Client?
Je viens de commencer à l'aide d'Apache HTTP du Client de la bibliothèque et a remarqué qu'il n'y avait pas une méthode intégrée de l'obtention de la réponse HTTP en tant que Chaîne. Je suis juste à la recherche que comme une Chaîne de caractères afin que je puisse les transmettre à ce que l'analyse de la bibliothèque que j'utilise.
Quelle est la méthode recommandée pour l'obtention de la réponse HTTP en tant que Chaîne de caractères? Voici mon code pour en faire la demande:
public String doGet(String strUrl, List<NameValuePair> lstParams) {
String strResponse = null;
try {
HttpGet htpGet = new HttpGet(strUrl);
htpGet.setEntity(new UrlEncodedFormEntity(lstParams));
DefaultHttpClient dhcClient = new DefaultHttpClient();
PersistentCookieStore pscStore = new PersistentCookieStore(this);
dhcClient.setCookieStore(pscStore);
HttpResponse resResponse = dhcClient.execute(htpGet);
//strResponse = getResponse(resResponse);
} catch (ClientProtocolException e) {
throw e;
} catch (IOException e) {
throw e;
}
return strResponse;
}
OriginalL'auteur Mridang Agarwalla | 2012-08-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
EntityUtils#toString()
pour cela.Je ne suis pas sûr de ce que tu veux dire avec "Apache Jersey". Il n'y a pas une telle chose dans Apache projet. "Jersey" est le Sun/Oracle implémentation de référence de JAX-RS API qui n'est pas un client HTTP.
désolé, je voulais dire sun/oracle jersey. il contient un client http avec une API fluent.
OriginalL'auteur BalusC
Vous avez besoin de consommer le corps de la réponse et obtenir la réponse:
Et puis de le lire:
La responseBody contient maintenant votre réponse comme une chaîne de caractères.
(Ne pas oublier de fermer la BufferedReader à la fin:
br.close()
)OriginalL'auteur Pedro Nunes
Vous pouvez faire quelque chose comme:
En utilisant le lecteur, vous serez en mesure de construire votre chaîne. Mais si vous êtes en utilisant SAX, vous pouvez donner le flux de l'analyseur directement. De cette façon, vous n'aurez pas à créer la chaîne et votre mémoire sera plus faible.
OriginalL'auteur dan
En termes de la concision du code qu'il pourrait être à l'aide de la API Fluent comme ceci:
La documentation avertit cependant que cette approche n'est pas idéal en termes de consommation de mémoire.
OriginalL'auteur anothernode