【发布时间】:2013-10-20 08:10:03
【问题描述】:
如果您可以从服务器获得 2 个不同的响应请求,如何格式化/设计您的课程?
注意:如果 JSON 响应格式(设计)与您的类不同,Retrofit 将抛出异常。 JSON 响应中的所有字段都必须存在于您的类中。
Java 类,如 JSON 响应:
public class RequestResponseLogin
{
public ResponseLogin status;
public class ResponseLogin
{
public boolean success;
public List<String> message;
}
}
JSON 响应:
{
"status" : {
"success" : false
"message" : {
"Invalid credientials",
"....",
"...."
}
}
}
这是我请求响应的方式:
interface iLogin
{
@GET
RequestResponseLogin loginUser(@Query("user") String user, @Query("pass") String pass);
}
// ....
RequestResponseLogin response = data.loginUser("admin", "abc123");
如果登录失败,则public List<String> message; 将被来自网络服务器的消息填充:
message[0] = 'Invalid credentials';
message[1] = 'Invalid username';
message[2] = 'Password match correct';
但是如果网络服务器没有回复任何内容(成功登录),那么我会通过改造得到一个异常,因为public List<String> message; 是空的,网络服务器回复了一个简单的空字符串消息而不是字符串数组。如果我把public List<String> message;改成public String message;就可以了,但是我不能,因为如果登录失败,它必须是一个字符串数组。
【问题讨论】:
标签: android json exception retrofit