2017-11-12 10 views
0

retrofit2を使用してWebサービスAPIにアクセスしています。 APIからの応答はJSON形式です。retrofit2の応答本文を読む

JSONResponseImage

enter image description here

改造では、私のクライアントは、APIとの接続に成功をしているが、私は「statusMessage」にアクセスしたい:「電子メールアドレスが既に存在する」Webサービスによって送信されます。私はいくつかのことを試みましたが、成功はありません。

public void onResponse(Call<User> call, Response<User> response) { 
    if (response.isSuccessful()) { 
     Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show(); 
    } else { 
     switch(response.code()) { 
      case 409: 
      Log.e("TAG", "1: " +response.raw());       
      Toast.makeText(MainActivity.this, "email already Registered", 
         Toast.LENGTH_SHORT).show(); 
      break; 
     } 
    } 
} 

seeImageLog

enter image description here

答えて

0

使用このコード:

public void onResponse(Call<User> call, Response<User> response) { 
       if (response.isSuccessful()) { 
//This is the status message. 
       String statusMessage = response.body().getStatusMessage(); 
} else { 

        switch(response.code()){ 
         case 409: 
          Log.e("TAG", "1: " +response.raw());       
          Toast.makeText(MainActivity.this, "email already Registered", Toast.LENGTH_SHORT).show(); 
          break; 
        } 

       } 
      } 

Userクラス:

public class User { 

    //No need to declare setStatusMessage as the value shall be set by retrofit automatically. No need to make this as public. 
    private String statusMessage; 

    public String getStatusMessage() { 
    //Return statusMessage declared in User class. 
    return statusMessage; 

     } 
} 
+0

方法はないでしょう「getStatusMessageを()」私のプロジェクトで定義されています。このメソッドはどこで定義する必要がありますか? –

+0

答えが更新されました。 –

+0

この関数を定義してもまだ機能していません。なぜなら、ユーザーオブジェクト属性に "statusMessage"値を設定していないからです。 まず、レスポンスの値を読み取らなければなりません。次に、それをユーザーオブジェクト属性に設定することができます。 –

0

を追加あなたのUserクラス

private Integer statusCode; 
private String statusMessage; 

public Integer getStatusCode() { 
return statusCode; 
} 

public void setStatusCode(Integer statusCode) { 
this.statusCode = statusCode; 
} 

public String getStatusMessage() { 
return statusMessage; 
} 

public void setStatusMessage(String statusMessage) { 
this.statusMessage = statusMessage; 
} 

に次の今、あなたはresponse.body().getStatusMessage(); NOTEようgetStatusMessage()にアクセスすることができますセッターは必要ありません、追加ゲッターは、ジョブ

関連する問題