我在我的項目中使用改裝2。 我在下面的場景中遇到問題。改裝2不解析錯誤的情況下的迴應
當我打電話給API
和server
告訴我的R equest was not executed
與error code
爲4xx
或500
的問題的細節信息。
但似乎retrofit
明白這是一個http error
並沒有收集。
我看到密切相同的問題here但它沒有解決我的問題。
我完全獲得響應成功,我確信在我的實現中沒有問題。
@Override
public void onResponse(Response<CustomResponse> response, Retrofit retrofit) {
Log.d("Response : ", response.body(), response.code()); // here i got response.body() is null if response code is not 200, if response code is 200 -- it work well as I expected.
onRequestSuccess(response);
}
我看看在retrofit
Response
類,我看到下面的代碼:
private Response(com.squareup.okhttp.Response rawResponse, T body, ResponseBody errorBody) {
this.rawResponse = checkNotNull(rawResponse, "rawResponse == null");
this.body = body;
this.errorBody = errorBody;
}
而且
public static <T> Response<T> error(ResponseBody body, com.squareup.okhttp.Response rawResponse) {
return new Response<>(rawResponse, null, body);
}
看來,當從server
response
代碼不是200
,retrofit
理解它是錯誤的,並將body
設置爲null
。
因此,在這種情況下,任何人都可以幫助獲得response body
的「正確」值?
只是使用response.errorBody() – mklimek
它沒有幫助。 response.Body()。string()=「」 –