Почему Retrofit reponse.body (). ToString () не отображает JSON из ответа? - PullRequest
0 голосов
/ 06 февраля 2020

Я делаю вызов Retrofit:

RetrofitInterfaces.IGetEvent service = RetrofitClientInstance.getRetrofitInstance().create(RetrofitInterfaces.IGetEvent.class);
        Call<ResponseBody> call = service.listRepos("1", "9e028aaa-d265-4e27-9528-30858ed8c13d");
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
                Log.d(TAG, "onResponse: URL: " + response.raw().request().url());
                if(response.isSuccessful() && response.body() != null){
                    Log.d(TAG, "onResponse: " + response.body().toString());
                }
            }

            @Override
            public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
                Log.d(TAG, "onFailure: Error: " + t);
            }
        });

Однако он возвращает его в журнал как: okhttp3.ResponseBody$1@fcf58e0

Но когда я делаю

try {
   System.out.println(response.body().string());
} catch (IOException e) {
   e.printStackTrace();
}

Он возвращает мне JSON {"server_time":1580949319,"event_info":[{"e_id":1

Почему первый не возвращает JSON String?

1 Ответ

3 голосов
/ 06 февраля 2020

Почему первый не возвращает JSON String?

Поскольку вы звоните toString(), тогда как во втором фрагменте вы звоните string(). string() возвращает JSON. toString(), в этом случае, возвращает реализацию по умолчанию, определенную для класса Object, которая является искаженной комбинацией имени класса и идентификатора объекта.

...