studio okhttpclient library example java android okhttp

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



okhttp3 android example (3)

El response.body,.string() se puede consumir una vez. Por favor, utilice como a continuación:

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

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

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


Solo en caso de que alguien se tope con lo mismo raro que yo. Ejecuto mi código durante el desarrollo en modo de depuración y aparentemente desde OKHttp 2.4

..el cuerpo de la respuesta es un valor de un disparo que se puede consumir solo una vez

Así que cuando en la depuración hay una llamada "detrás de la escena" del inspector y el cuerpo está siempre vacío. Consulte: https://square.github.io/okhttp/3.x/okhttp/okhttp3/ResponseBody.html


Tiene la función .string() para imprimir la respuesta en System.out.println() . Pero por fin en Log.i() estás usando .toString() .

Por lo tanto, utilice .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 su respuesta.

Creo que esto resuelve tu problema ... Correcto.