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

时间:2015-05-19 15:56:05

标签: android server httpresponse

我正在Android App和服务器之间开发通信系统。

我正在使用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类及其getter和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.class没有有效值,我可以从服务器发送哪个 ERROR RESPONSE

2 个答案:

答案 0 :(得分:2)

实际上没有“最佳错误响应”。这取决于您的要求。但是广泛使用的架构称为REST,而Retrofit是根据REST交互设计的。 REST基本上只是一组clientsservers无需任何文档即可理解的规则。

因此,如果您想通过GET从服务器检索(REST)某些对象/数据,您可以使用状态200接收它或者使用适当的接收状态404体内错误(或没有它)的描述。

Here还有一些要阅读。

答案 1 :(得分:1)

最佳错误响应是对您作为开发人员有意义的响应。我不会搞乱默认的HTTP状态/错误代码。相反,我会从服务器发送一个特定的响应。例如,将HTTP响应代码保持为200,但在发送给应用程序的数据中将其设置为“ERROR:no values”。或者你喜欢什么。然后,在您的Android应用中,检查响应以查看它是否包含值或错误。像

这样的东西
if(resp.startsWith("ERROR:")){
    // Do error handling //
} else { 
    // Normal code //
}