簡體   English   中英

我如何讓Robospice處理來自Retrofit和OKHttp的200響應以外的任何錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM