好的,我已成功连接到远程服务器并收到HTTP/1.1 200 OK
响应,并且响应被打包到HttpResponse对象中。现在我如何获取响应中的数据,特别是从服务器发送的JSON?
答案 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()
时使用BasicResponseHandlerResponseHandler <String> resonseHandler = new BasicResponseHandler();
String response = httpclient.execute(httpget, resonseHandler);