Extraer el cuerpo del mensaje de HttpResponse
Ok, he conectado correctamente a un servidor remoto y recibió una respuesta HTTP/1.1 200 OK
y la respuesta se incluye en el objeto HttpResponse. ¿Ahora cómo consigo los datos en la respuesta fuera de él, específicamente el JSON que fue enviado del servidor?
- JSONObject.toString: cómo no escapar de barras
- Almacenamiento interno de Android, cómo analizar correctamente un archivo de texto JSON
- Cómo enviar una matriz String como nombre de valor básico par como HTTPPOST?
- Cómo descargar y guardar un archivo usando phonegap / cordova en Android
- Cómo analizar los resultados de JSON de Unirest llamada
- Verificar firma digital en Android
- ¿Cómo comprobar si la respuesta del servidor es JSONAobject o JSONArray?
- Cómo analizar un archivo JSON grande en android
- Cómo serializar objeto a JSON?
- ¿Existe un límite de longitud de la clave (cadena) en el objeto JS?
- Enviando cadena UTF-8 usando HttpURLConnection
- Android no procesar objeto JSON
- ¿Cómo puedo añadir un archivo de imagen al objeto json?
Algo como esto: duplicar aquí: ¿Cómo analizar JSON de un Java HTTPResponse?
HttpResponse response; // some response object BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); String json = reader.readLine(); JSONTokener tokener = new JSONTokener(json); JSONArray finalResult = new JSONArray(tokener);
Bueno, puede obtener el cuerpo del HttpResponse
llamando a getEntity()
que devuelve un objeto de tipo HttpEntity
. A continuación, desea consumir el InputStream
que se devuelve desde el método getContent()
de la HttpEntity
. Lo haría así:
public static String entityToString(HttpEntity entity) { InputStream is = entity.getContent(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); StringBuilder str = new StringBuilder(); String line = null; try { while ((line = bufferedReader.readLine()) != null) { str.append(line + "\n"); } } catch (IOException e) { throw new RuntimeException(e); } finally { try { is.close(); } catch (IOException e) { //tough luck... } } return str.toString(); }
Utilice un BasicResponseHandler al llamar a httpclient.execute ()
ResponseHandler <String> resonseHandler = new BasicResponseHandler(); String response = httpclient.execute(httpget, resonseHandler);
También puede usar EntityUtils
response = cl.execute(p); //cl is http client and p is the post request if(response.getStatusLine().getStatusCode()==200) { try { String resp_body = EntityUtils.toString(response.getEntity()); Log.v("resp_body", resp_body.toString()); JSONObject jsobj = new JSONObject(resp_body); } catch(Exception e) { Log.e("sometag",e.getMessage()); } }
PS: Es posible que tenga que hacer esto en un subproceso independiente, aparte del subproceso principal, como en el doInBackground () de una AsyncTask o operación de red en la excepción de subproceso principal puede producirse.
- Implementación de desplazamiento circular en PagerAdapter
- Android: ¿Cómo configurar el icono en la barra de título de la actividad del Diálogo?