サーバーから2つの異なる応答リクエストを取得できる場合、クラスをフォーマット/設計する方法は?
注: JSON 応答形式 (設計) がクラスと異なる場合、Retrofit は例外をスローします。JSON 応答のすべてのフィールドがクラスに存在する必要があります。
JSON 応答のような Java クラス:
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;
Web サーバーからのメッセージが読み込まれます。
message[0] = 'Invalid credentials';
message[1] = 'Invalid username';
message[2] = 'Password match correct';
しかし、Web サーバーが何も応答しない場合 (ログインの成功) は、レトロフィットによって例外が発生しpublic List<String> message;
ます。空であるため、Web サーバーは、文字列配列ではなく、単純な空の文字列メッセージで応答しました。に変更public List<String> message;
するpublic String message;
と機能しますが、ログインに失敗した場合は文字列配列でなければならないため、できません。