从HttpResponse中提取消息体

时间:2011-08-05 04:54:56

标签: android json httpresponse

好的,我已成功连接到远程服务器并收到HTTP/1.1 200 OK响应,并且响应被打包到HttpResponse对象中。现在我如何获取响应中的数据,特别是从服务器发送的JSON?

4 个答案:

答案 0 :(得分:25)

类似这样的内容:此处重复:How do I parse JSON from a 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);

答案 1 :(得分:4)

好吧,你可以通过调用HttpResponse来获取getEntity()的正文,它会返回HttpEntity类型的对象。然后,您需要使用InputStream的{​​{1}}方法返回的getContent()。我会这样做:

HttpEntity

答案 2 :(得分:1)

您也可以使用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:您可能必须在除主线程之外的单独线程中执行此操作,例如AsyncTask的doInBackground()或主线程上的网络操作可能发生异常。

答案 3 :(得分:0)

调用httpclient.execute()

时使用BasicResponseHandler
ResponseHandler <String> resonseHandler = new BasicResponseHandler();
String response = httpclient.execute(httpget, resonseHandler);