2010-04-03 7 views
22

Tengo este código en mi teléfono Android.¿Cómo imprimir el mensaje devuelto de HttpResponse?

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

Tengo una aplicación asp.net formulario web que tiene en la carga de la página esta

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

Quiero agarrar esta respuesta de la HttpReponse e imprimirlo. ¿Cómo hago esto?

Intenté response.getEntity().toString() pero parece imprimir la dirección en la memoria.

Gracias

Respuesta

38

Use ResponseHandler. Una linea de codigo Consulte here y here para ejemplos de proyectos de Android que lo utilizan.

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

complemento combinación de este post y completa en HttpClient - http://www.androidsnippets.org/snippets/36/

+0

cuales androide api versión no esta disponible en convertirse? Podría tener que volver a escribir el código de llegada: D –

+0

Creo que ha estado allí desde el principio, o al menos desde Android 0.9. Es parte del paquete estándar HttpClient 4.x. – CommonsWare

8

yo sólo lo harían a la antigua usanza. Es más resistente a balas que ResponseHandler, en caso de que obtenga diferentes tipos de contenido en la respuesta.

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

Este código devolverá la totalidad del mensaje de respuesta en responden como String, y el código de estado RSP, como int.

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

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

He utilizado el siguiente código

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