问题:我打算将服务器返回的json数据进行解析,解析出来的对象一直是空,我还以为我导入的GSON库有问题,气死了。
贴上错误代码
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
try {
Log.d("RetrofitActivity", response.body().string());
//String result = response.body().string();
BaseResponse baseResponse = new Gson().fromJson(response.body().string(), BaseResponse.class);
System.out.println(baseResponse);
} catch (IOException e) {
e.printStackTrace();
}
}
注意看我调用了两次response.body().string(),原来response.body().string()只能调用一次,第二次为空。因为response.body().string()所包含的资源往往很大 ,当客户端接收到数据之后,okhttp的缓冲区就会自动释放资源!!
具体看思否
解决方案:
public void onResponse(retrofit2.Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
try {
//Log.d("RetrofitActivity", response.body().string());
String result = response.body().string();
BaseResponse baseResponse = new Gson().fromJson(result, BaseResponse.class);
System.out.println(baseResponse);
} catch (IOException e) {
e.printStackTrace();
}
}