我应该从服务器发送给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在服务器中失败?
答
其实没有“最好的错误响应”。这取决于你的要求。但有广泛使用的架构称为REST
和Retrofit
被设计在根据REST
的交互中。 REST
基本上只是一组规则,其中clients
和servers
没有任何文档。
所以,如果你想检索(GET
)一些对象/由REST
从服务器数据您可以用状态200
收到或收到与体内错误恰当的描述(或没有它)状态404
。
Here一些更多的阅读。
答
最好的错误响应是一个对开发人员有意义的错误响应。我不会混淆默认的HTTP状态/错误代码。相反,我会从服务器发送特定的响应。例如,将HTTP响应代码保持在200,但在发送给应用程序的数据中将其设置为“错误:无值”。或任何你喜欢的。然后,在您的Android应用程序中,检查响应以查看它是否包含值或错误。类似于
if(resp.startsWith("ERROR:")){
// Do error handling //
} else {
// Normal code //
}