2010-04-03 4 views
22

J'ai ce code sur mon téléphone Android.Comment imprimer le message renvoyé par HttpResponse?

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

J'ai une application Webform asp.net qui a la charge de la page ce

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

Je veux saisir cette réponse de la HttpReponse et l'imprimer. Comment puis-je faire cela? J'ai essayé response.getEntity().toString() mais il semble juste imprimer l'adresse en mémoire.

Merci

Répondre

38

Utilisez ResponseHandler. Une ligne de code. Voir here et here pour des exemples de projets Android en 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 
    } 
} 
combinaison

add de ce post et complet à HttpClient - http://www.androidsnippets.org/snippets/36/

+0

version android api que cela devient disponible? Je pourrais avoir à réécrire le code: D –

+0

Je pense qu'il a été là depuis le début, ou au moins depuis Android 0.9. Cela fait partie du paquet HttpClient 4.x standard. – CommonsWare

8

Je voudrais juste faire à l'ancienne. Il est plus résistant 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(); 
3

Ce code renvoie le message de réponse toute en répondre comme String, et le code d'état dans rsp, comme int.

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

rsp = response.getStatusLine().getStatusCode();` 
6

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();