为什么 Retrofit reponse.body().toString() 不显示响应中的 JSON?
Why does Retrofit reponse.body().toString() not display the JSON from response?
我正在调用 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);
}
});
但是 return 日志如下:okhttp3.ResponseBody@fcf58e0
但是当我这样做时
try {
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
它 return 是我 JSON {"server_time":1580949319,"event_info":[{"e_id":1
为什么第一个不是 return JSON 字符串?
Why does the first one not return the JSON String?
因为您正在调用 toString()
,而在您的第二个代码段中,您正在调用 string()
。 string()
returns JSON。 toString()
,在这种情况下,returns 是 Object
class 上定义的默认实现,它是 class 名称和对象 ID 的错位组合。
我正在调用 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);
}
});
但是 return 日志如下:okhttp3.ResponseBody@fcf58e0
但是当我这样做时
try {
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
它 return 是我 JSON {"server_time":1580949319,"event_info":[{"e_id":1
为什么第一个不是 return JSON 字符串?
Why does the first one not return the JSON String?
因为您正在调用 toString()
,而在您的第二个代码段中,您正在调用 string()
。 string()
returns JSON。 toString()
,在这种情况下,returns 是 Object
class 上定义的默认实现,它是 class 名称和对象 ID 的错位组合。