不能得到OkHttp的response.body.toString()返回一个string

我试图得到一些JSON数据使用OkHttp,并不能找出为什么当我尝试loggingresponse.body().toString()我得到的是Results:﹕ com.squareup.okhttp.Call$RealResponseBody@41c16aa8

 try { URL url = new URL(BaseUrl); OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .header(/****/) .build(); Call call = client.newCall(request); Response response = call.execute(); **//for some reason this successfully prints out the response** System.out.println("YEAH: " + response.body().string()); if(!response.isSuccessful()) { Log.i("Response code", " " + response.code()); } Log.i("Response code", response.code() + " "); String results = response.body().toString(); Log.i("OkHTTP Results: ", results); 

日志

我不知道我在这里做错了什么。 我如何得到响应string?

Solutions Collecting From Web of "不能得到OkHttp的response.body.toString()返回一个string"

你已经使用.string()函数在System.out.println()打印响应。 但最后在Log.i()中使用.toString()

所以请使用响应正文上的.string()来打印并获取请求的响应,如:

 response.body().string(); 

注意:

  1. .toString() :这将返回string格式的对象。

  2. .string() :这将返回你的回应。

我认为这解决了你的问题…对。

以防万一有人碰到我有的同样奇怪的事情。 我在debugging模式的开发过程中运行我的代码,显然,因为OKHttp 2.4

响应主体是一次性的价值,可能只消费一次

所以在debugging的时候,检查员会有一个叫做“幕后”的调用,而且主体总是空的。 请参阅: http : //square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/Response.html