2015-05-19 100 views
0

我正在開發Android應用程序和服務器之間的通信系統。我應該從服務器發送給Android的最佳錯誤響應?

我正在使用Retrofit API進行Android與服務器的通信。

當我做一個GET(於Android端)從服務器獲取信息,我使用了一個CallBackTask方法是這樣的:

public void testGet() 
{ 

    RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint(UserApi.SERVER) 
      .build(); 
    final UserApi svc = restAdapter.create(UserApi.class); 


    if (svc != null) { 
     CallableTask.invoke(new Callable<Test>() { 

      @Override 
      public Test call() throws Exception { 


       Test g = svc.getTest(); 
        System.out.println("getVdd() = "+g.getVdd()+"+ getResp() = "+g.getResp()); 
       return g; 
      } 
     }, new TaskCallback<Test>() { 

      @Override 
      public void success(Test result) { 

       Intent i = new Intent(getApplicationContext(),SplashRapidoActivity.class); 
       startActivity(i); 

      } 

      @Override 
      public void error(Exception e) { 
       Toast.makeText(
         getApplicationContext(), 
         "Unable to connect, please try again.", 
         Toast.LENGTH_SHORT).show(); 


      } 
     }); 
    } 
} 

Test.class是變量和他的干將一個POJO類和setter方法:

public class Test { 

String vdd; 
String resp; 

public Test() 
{ 
} 

public void setVdd(String vdd) { 
    this.vdd = vdd; 
} 

public String getVdd() { 
    return vdd; 
} 
public void setResp(String resp) 
{} 
public String getResp() 
{ 
    return resp; 
} 
} 

所以,我的問題是,這是最好的錯誤響應我可以從服務器發送如果沒有有效的值的TEST.C在服務器中失敗?

回答

2

其實沒有「最好的錯誤響應」。這取決於你的要求。但有廣泛使用的架構稱爲RESTRetrofit被設計在根據REST的交互中。 REST基本上只是一組規則,其中clientsservers沒有任何文檔。

所以,如果你想檢索(GET)一些對象/由REST從服務器數據您可以用狀態200收到或收到與體內錯誤恰當的描述(或沒有它)狀態404

Here一些更多的閱讀。

1

最好的錯誤響應是一個對開發人員有意義的錯誤響應。我不會混淆默認的HTTP狀態/錯誤代碼。相反,我會從服務器發送特定的響應。例如,將HTTP響應代碼保持在200,但在發送給應用程序的數據中將其設置爲「錯誤:無值」。或任何你喜歡的。然後,在您的Android應用程序中,檢查響應以查看它是否包含值或錯誤。類似於

if(resp.startsWith("ERROR:")){ 
    // Do error handling // 
} else { 
    // Normal code // 
} 
相關問題