[英]Retrofit/Robospice: get response headers from successful request?
[英]How do I get Robospice to treat anything other than a 200 response from Retrofit & OKHttp as an error
我使用Retrofit和OKHttp在Android上使用Robospice。 所有工作都很好,使用Robospice RequestListener將響應傳遞回活動。 問題是,如果連接超時或其他網絡問題,它只會返回失敗。 如果返回401,那么它被歸類為成功但具有空響應,因為它無法將JSON解析為我們的MobileAppSetup POJO。
目前我不得不對響應進行空檢查,但我不知道如果是服務器錯誤或有效的401,原因是什么。
public final class HTTPRequestListener implements RequestListener<MobileAppSetup> {
@Override
public void onRequestFailure(SpiceException spiceException) {
Log.d("", "failure:"+ spiceException);
loginProgress.hide();
}
@Override
public void onRequestSuccess(final MobileAppSetup response) {
Log.d("","success. Data: "+response);
if(response==null)
showDialog("Error logging in", "Please check your username and password and try again.", "");
loginProgress.hide();
postLoginProcess(response);
}
}
我需要將這些錯誤傳遞給onRequestFailure回調,以便我可以正確處理它。 有沒有辦法指定Robospice應該視為錯誤的錯誤代碼。 我認為它涉及添加某種自定義錯誤處理程序,但目前還無法找到解決方案。
這可能是由於OKHTTP客戶端中的錯誤可能出錯!
問題是當服務器以401 Unauthorized響應回答時,Callback對象調用其failure()方法。
當服務器返回401狀態時,
RetrofitError
響應對象為null,並且networkError
標志設置為true,使得app無法檢查error.getResponse().getStatus()
我相信錯誤在於http客戶。 使用OkClient時,我收到此錯誤:java.io.IOException:未找到身份驗證質詢
我建議你從square / okhttp下載新的okhttp jar文件再次運行該項目! 或嘗試與任何其他客戶端而不是okhttp。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.