2017-04-10 42 views
1

如何使用同步請求處理與改造2錯誤響應?如何使用Retrofit 2處理錯誤響應?

我需要處理響應,在正常情況下,返回寵物陣列,並且如果請求具有壞parametrs返回錯誤JSON對象。我如何處理這兩種情況?

我想使用this教程,但主要的問題是正常的映射和錯誤JSON對象。

正常反應例如:

[ { 
    "type" : "cat", 
    "color": "black" 
}, 
{ 
    "type" : "cat", 
    "color": "white" 
} ] 

錯誤響應例如:

{"error" = "-1", error_description = "Low version"} 

什麼我:

Call<List<Pet>> call = getApiService().getPet(1); 
    Response<List<Pet>> response; 
    List<Pet> result = null; 

    try { 
     response = call.execute(); //line with exception "Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path" 
     if(!response.isSuccessful()){ 
      Error error = parseError(response); 
      Log.d("error message", error.getErrorDescription()); 
     } 
     if (response.code() == 200) { 
      result = response.body(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

回答

1

改造2具有處理不同的概念「成功」的要求比翻新1.在翻新2中,所有可以執行(發送到API)並且您正在接收響應的請求都被視爲「成功」。這意味着,對於這些要求,onResponse回調被觸發,則需要手動檢查該請求是否是真正成功的(狀態200-299)或錯誤(狀態400-599)。

如果請求成功完成,我們可以使用響應對象並執行任何我們想要的操作。如果錯誤實際上失敗(請記住,狀態400-599),我們希望向用戶顯示有關該問題的適當信息。

更多細節請參考本link

+1

我明白,但主要問題是過程中的兩個JSON對象:寵物陣列(在正常情況下)和錯誤響應(如果請求具有壞paraters)。 –