No se puede obtener la respuesta de OkHttp.body.toString () para devolver una cadena

Estoy tratando de obtener algunos datos JSON usando OkHttp y no puedo entender por qué cuando trato de registrar el response.body().toString() lo que obtengo es 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); 

Iniciar sesión

No sé lo que estoy haciendo mal aquí. ¿Cómo obtengo la cadena de respuesta?

Tiene la función .string() para imprimir la respuesta en System.out.println() . Pero al final en Log.i() está utilizando .toString() .

Por lo tanto, use .string() en el cuerpo de la respuesta para imprimir y obtener la respuesta de su solicitud, como:

 response.body().string(); 

NOTA:

  1. .toString() : Esto devuelve su objeto en formato de cadena.

  2. .string() : Esto devuelve tu respuesta.

Creo que esto resuelve tu problema … Correcto.

Solo en caso de que alguien tropiece con la misma cosa extraña que tengo. Ejecuto mi código durante el desarrollo en modo de depuración y aparentemente desde OKHttp 2.4

..el cuerpo de respuesta es un valor de una toma que puede consumirse solo una vez

Por lo tanto, cuando se realiza la depuración, el inspector llama “detrás de la escena” y el cuerpo siempre está vacío. Ver: https://square.github.io/okhttp/3.x/okhttp/okhttp3/ResponseBody.html

El response.body,.string() puede consumirse solo una vez. Por favor use de la siguiente manera:

 String responseBodyString = response.body.string(); use the responseBodyString as needed in your application.