2010-04-03 13 views
22

Ho questo codice sul mio telefono Android.Come stampare il messaggio restituito da HttpResponse?

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

Ho un'applicazione modulo web asp.net che ha nella pagina di carico questo

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

voglio afferrare questa risposta dal HttpReponse e stamparlo. Come faccio a fare questo?

Ho provato response.getEntity().toString() ma sembra solo stampare l'indirizzo in memoria.

Grazie

risposta

38

Utilizzare ResponseHandler. Una riga di codice. Vedi here e here per esempi di progetti Android che lo utilizzano.

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 combinazione di questo post e completa HttpClient a - http://www.androidsnippets.org/snippets/36/

+0

che api versione Android fa questo si rendono disponibili a? Potrei dover riscrivere come codice: D –

+0

Penso che sia stato lì fin dall'inizio, o almeno dal momento che Android 0.9. Fa parte del pacchetto standard HttpClient 4.x. – CommonsWare

8

vorrei solo farlo alla vecchia maniera. È più a prova di proiettile di ResponseHandler, nel caso in cui si ottengano diversi tipi di contenuto nella risposta.

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

Questo codice restituirà l'intero messaggio di risposta in rispondere come String, e codice di stato in RSP, come int.

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

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

ho usato il seguente codice

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