我应该从服务器发送给Android的最佳错误响应?

问题描述:

我正在开发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在服务器中失败?

其实没有“最好的错误响应”。这取决于你的要求。但有广泛使用的架构称为RESTRetrofit被设计在根据REST的交互中。 REST基本上只是一组规则,其中clientsservers没有任何文档。

所以,如果你想检索(GET)一些对象/由REST从服务器数据您可以用状态200收到或收到与体内错误恰当的描述(或没有它)状态404

Here一些更多的阅读。

最好的错误响应是一个对开发人员有意义的错误响应。我不会混淆默认的HTTP状态/错误代码。相反,我会从服务器发送特定的响应。例如,将HTTP响应代码保持在200,但在发送给应用程序的数据中将其设置为“错误:无值”。或任何你喜欢的。然后,在您的Android应用程序中,检查响应以查看它是否包含值或错误。类似于

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