2016-09-29 1 views
0

サーバーに新しいUserオブジェクトを@POSTする機能を使用しています。ユーザー名は、データベース表の一意のキーです。一意のユーザー名で非同期呼び出しを実行すると、そのエントリがUserテーブルに追加されます。応答は成功です。Retrofit - POSTが失敗したときの知り合い

ただし、既存のユーザー名を持つユーザーの呼び出しを実行しようとすると、データベーステーブルに(期待どおり)追加されません。BUT応答は成功です。すべてのケースで、私は成功した反応を得ています。

操作が成功したことを通知または確認するにはどうすればよいですか?作成/更新/削除の呼び出しがデータベースに正常に反映されていれば?

エンドポイント:

@POST("user") 
Call<User> saveUser(@Body User m); 

サンプルコール:

call.enqueue(new Callback<User>() { 
      @Override 
      public void onResponse(Call<User> call, Response<User> response) { 

       try { 
        if(response.isSuccessful()) { 

         Log.i(Constants.LOG, response.raw().toString()); 
        } 
       } catch (Exception e) { 
        Log.e(Constants.LOG, e.toString()); 
       } 
      } 

すべてのシナリオでは、生の応答出力:

Response{protocol=http/1.1, code=200, message=OK, url=http://myapi.com/user} 
+0

すべてをあなたのサーバが状態コード200を返す時間? –

+0

意図した作業が行われたかどうかにかかわらず、Webサービスにヒットした場合は、毎回ステータスコードとして200が取得されます。私は、あなたのサーバーコードにログを記録し、何が壊れているのかを見て、例外を処理してクライアントに適切な応答を返すように提案します。 –

+0

しかし、操作が成功したかどうかを確認するにはどうすればよいですか?私の電話をテストするために郵便配達員を使用すると、私の残りのアプリで、私は成功/不成功のメッセージを返すことができます。どのように私は改造を使用してそのようなメッセージを返すことができますか? – Santiago

答えて

0

okがので、私は最終的にこの問題を解決する方法を見つけました。私の残りのAPIで、私はstatusを呼び出して、カスタムcode送信する必要がありました:重複したユーザーを追加する場合は

res.status(300).send({ error: 'Something went wrong' }); 

を、応答が失敗したと私は生の出力を得る:

Response{protocol=http/1.1, code=300, message=Internal Server Error, url=http:///myapi.com/user} 
関連する問題