Не удается получить OkHttp response.body.toString(), чтобы вернуть строку
Я пытаюсь получить некоторые json-данные, используя OkHttp, и не могу понять, почему, когда я пытаюсь выполнить регистрацию response.body().toString()
, я получаю Results:﹕ [email protected]
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);
![Log]()
Я не знаю, что я делаю неправильно здесь. Как получить строку ответа?
Ответы
Ответ 1
У вас есть функция .string()
для печати ответа в System.out.println()
. Но, наконец, в Log.i()
вы используете .toString()
.
Поэтому, пожалуйста, используйте .string()
в теле ответа для печати и получите ответ своего запроса, например:
response.body().string();
Примечание:
Я думаю, что это решит вашу проблему... Правильно.
Ответ 2
На всякий случай кто-то сталкивается с той же странной вещью, что и я. Я запускаю свой код во время разработки в режиме отладки и, по-видимому, с тех пор, как OKHttp 2.4
.. тело реакции - это одноразовое значение, которое может потребляться только один раз
Поэтому, когда в отладочном режиме у инспектора есть вызов "за сценой", тело всегда пустое. См.: http://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/Response.html