2010-04-03 8 views
22

Ich habe diesen Code auf meinem Android-Handy.Wie ausgedruckt Nachricht von HttpResponse?

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

Ich habe eine asp.net Webformular-Anwendung, die in der Seite zu laden, hat diese

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

ich von der HttpReponse diese Antwort greifen wollen und drucken Sie es aus. Wie mache ich das?

Ich versuchte response.getEntity().toString(), aber es scheint nur die Adresse im Speicher auszudrucken.

Dank

Antwort

38

Verwendung ResponseHandler. Eine Codezeile. Beispiele für Android-Projekte finden Sie unter here und here.

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 
    } 
} 

Add Kombination dieser Post und vollständige Httpclient an - http://www.androidsnippets.org/snippets/36/

+0

die Android API-Version ist dies bei verfügbar sind? Ich muss vielleicht code code umschreiben: D –

+0

Ich denke es ist seit Anfang an da gewesen, oder zumindest seit Android 0.9. Es ist Teil des Standard-HttpClient 4.x-Pakets. – CommonsWare

8

würde ich es nur auf die alte Weise. Es ist kugelsicherer als ResponseHandler, falls Sie unterschiedliche Inhaltstypen in der Antwort erhalten.

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

Dieser Code wird die gesamte Antwortnachricht in reagieren als String und Statuscode in rsp als int zurück.

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

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

habe ich den folgenden Code

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