2016-04-26 20 views
0

私のアプリでロジックを構築するためのPOSTリクエストからデータを取得しようとしています。POSTリクエストからデータを取得

たとえば、コード== 200ならメインアクティビティを開始し、そうでない場合はエラーメッセージを作成します。

しかし、このデータを応答値(パラメータonResponseメソッド)から取得しようとすると、NPEがあり、スタックトレースでresponse.body()= nullが表示されます。

私はまた、要求が正しいことを確認し、コード== 200、ステータス= OKを取得します。

{ 
    "status": true, 
    "auth": { 
     "token": "f1071c34857e456b8ceb996de3459ab3", 
     "expires": "2017-04-26 10:01:21", 
     "user_id": "11272862" 
    }, 
    "user": { 
     "user_id": "11272862", 
     "username": "prozrostyslav", 
     "full_url": "https://vid.me/prozrostyslav", 
     "avatar": null, 
     "avatar_url": "https://d2ha22j8ys3e0o.cloudfront.net/images/default-avatars/13.png?602-2-2-4-9", 
     "cover": null, 
     "cover_url": "https://d2ha22j8ys3e0o.cloudfront.net/images/default-covers/03.jpg?602-2-2-4-9", 
     "displayname": null, 
     "follower_count": 0, 
     "likes_count": "0", 
     "video_count": 0, 
     "video_views": "0", 
     "videos_scores": 0, 
     "comments_scores": 0, 
     "bio": null 
    } 
} 

が、私は私のアプリでそれを得ることができません:( APIインタフェース:

public interface VideoApi { 

    @GET("/videos/featured") 
    Call<Videos> getFeaturedVideo(); 

    @GET("/videos/new") 
    Call<Videos> getNewVideo(); 

@Headers("Content-Type:application/x-www-form-urlencoded") 
    @FormUrlEncoded 
    @POST("/auth/create") 
    Call<SignInResults>insertUser(@Header("Authorization") String authorization,@Field("username") String username, 
          @Field("password") String password 
          ); 
} 

断片:(私は、この要求は私のデータを取得していることがわかりポストマンから 値を取得しようとするとonResponseメソッドのエラー)

SignInResult:

public class SignInResult { 


    @SerializedName("authorization") 
    @Expose 
    private String authorization; 
    @SerializedName("code") 
    @Expose 
    private String code; 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    @SerializedName("username") 
    @Expose 
    private String username; 

    public String getUser_id() { 
     return user_id; 
    } 

    public void setUser_id(String user_id) { 
     this.user_id = user_id; 
    } 

    @SerializedName("user_id") 
    @Expose 
    private String user_id; 
} 

SignInResults:

public class SignInResults { 
public SignInResult signInResult; 

    public List<SignInResult> getSignInResults() { 
     return signInResults; 
    } 

    List<SignInResult> signInResults; 
} 

答えて

1

私はあなたが改造を使用している見ることができるように。追加のログを追加してレスポンスを更新し、リクエストしてそこにあるものを見てみましょう。

ブラウザークライアントで照会している場合、ブラウザーは追加のスタッフを追加することができます。 (crftokensなど)

私の例のretrofit設定。注:これはバージョン1.9用ですが、決して1つでも多くの変更があってはいけません。

 mRestAdapter = new RestAdapter.Builder() 
      .setEndpoint(SERVER_URL) 
      .setLogLevel(RestAdapter.LogLevel.FULL) 
      .setConverter(gsonConverter) 
      .setLog(new RestAdapter.Log() { 
       @Override 
       public void log(String message) { 
        Log.d("Retrofit", message); 
       } 
      }) 
関連する問題