web-dev-qa-db-fra.com

Comment imprimer le message renvoyé par HttpResponse?

J'ai ce code sur mon téléphone Android.

   URI uri = new URI(url);
   HttpPost post = new HttpPost(uri);
   HttpClient client = new DefaultHttpClient();
   HttpResponse response = client.execute(post);

J'ai une application de formulaire Web asp.net qui a dans la page charger cette

 Response.Output.Write("It worked");

Je veux saisir cette réponse de la réponse HttpReponse et l'imprimer. Comment puis-je faire cela?

J'ai essayé response.getEntity().toString() mais il semble simplement imprimer l'adresse en mémoire.

Merci

23
chobo2

Utilisez ResponseHandler . Une ligne de code. Voir ici et ici pour des exemples de projets Android l'utilisant.

public void postData() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/user");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        ResponseHandler<String> responseHandler=new BasicResponseHandler();
        String responseBody = httpclient.execute(httppost, responseHandler);
        JSONObject response=new JSONObject(responseBody);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
} 

ajoutez une combinaison de ce message et complétez HttpClient à - http://www.androidsnippets.org/snippets/36/

38
CommonsWare

Je voudrais juste le faire à l'ancienne. C'est une solution plus fiable que ResponseHandler, au cas où vous obtiendriez différents types de contenu dans la réponse.

ByteArrayOutputStream outstream = new ByteArrayOutputStream();
response.getEntity().writeTo(outstream);
byte [] responseBody = outstream.toByteArray();
8
hnviet

J'ai utilisé le code suivant

BufferedReader r = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

StringBuilder total = new StringBuilder();

String line = null;

while ((line = r.readLine()) != null) {
   total.append(line);
}
r.close();
return total.toString();
6
Lunf

Ce code renverra l'intégralité du message de réponse dans reply en tant que String et le code d'état dans rsp , en tant que int.

respond = response.getStatusLine().getReasonPhrase();

rsp = response.getStatusLine().getStatusCode();`
4
Sanghita

La méthode la plus simple consiste probablement à utiliser org.Apache.http.util.EntityUtils:

String message = EntityUtils.toString(response.getEntity());

Il lit le contenu d'une entité et le renvoie sous forme de chaîne. Le contenu est converti à l'aide du jeu de caractères de l'entité (le cas échéant). Sinon, "ISO-8859-1" est utilisé.

Si nécessaire, vous pouvez explicitement définir un jeu de caractères par défaut - par exemple. 

String message = EntityUtils.toString(response.getEntity(). "UTF-8");

Il obtient le contenu de l'entité sous forme de chaîne, en utilisant le jeu de caractères fourni par défaut si aucun élément n'est trouvé dans l'entité. Si le jeu de caractères par défaut transmis est null, la valeur par défaut "ISO-8859-1" est utilisée.

1
JimiLoe