得到HttpResponse的响应主体

adr*_*ian 9 android entity http

我这样做了:

response = httpclient.execute(targetHost, httppost); 
    if(response.getStatusLine().getStatusCode() == 200)
                        {
    HttpEntity entity = response.getEntity();
    System.out.println("Entity:"+entity);
  if (entity != null) 
                            {
        String responseBody = EntityUtils.toString(entity);
        System.out.println("finalResult"+responseBody.toString());
                            }
Run Code Online (Sandbox Code Playgroud)

关于它的事情是第一个println()显示这个:org.apache.http.conn.BasicManagedEntity@481e8150这是好的.

但第二个System.out.println("finalResult"+responseBody.toString());只显示这个finalResult.那么这有什么问题:

String responseBody = EntityUtils.toString(entity);
            System.out.println("finalResult"+responseBody.toString());
Run Code Online (Sandbox Code Playgroud)

???

重要事项HttpEntity entity = response.getEntity();等于org.apache.http.conn.BasicManagedEntity@481e8150.所以问题必须在这里:

String responseBody = EntityUtils.toString(entity);.

请帮忙!!!

waq*_*lam 24

首先,查看您的服务器是否未返回空白响应:

response.getEntity().getContentLength();  //it should not be 0
Run Code Online (Sandbox Code Playgroud)

其次,尝试以下方法将响应转换为字符串:

StringBuilder sb = new StringBuilder();
try {
    BufferedReader reader = 
           new BufferedReader(new InputStreamReader(entity.getContent()), 65728);
    String line = null;

    while ((line = reader.readLine()) != null) {
        sb.append(line);
    }
}
catch (IOException e) { e.printStackTrace(); }
catch (Exception e) { e.printStackTrace(); }


System.out.println("finalResult " + sb.toString());
Run Code Online (Sandbox Code Playgroud)


小智 8

你可以用这个:

String s = EntityUtils.toString(httpRes.getEntity());
Run Code Online (Sandbox Code Playgroud)