2015-01-14 1 views
8

は、私が最初にこのようなレトロフィットインターフェイスを実装しました。これにより、retrofit.RetrofitError: End of input at character 0 ofというコールバックが発生し、Userというオブジェクトが返されます。改造、204コンテンツレスポンスのコールバック?</p> <pre><code>@DELETE(USER_API_BASE_URL + "/{id}") public void deleteUser(@Path("id") String id, Callback<User> callback); </code></pre> <p>サーバは204成功した削除時にNO CONTENT返します:アンドロイドで

私は、代わりにUserVoidを使用して、このようにそれを書き直し:

@DELETE(USER_API_BASE_URL + "/{id}") 
public void deleteUser(@Path("id") String id, Callback<Void> callback); <-- VOID 

しかし、私は、コールバックから同じエラーを取得しています。 これを修正する適切な方法は何ですか?ありがとうございました。

+0

THERがレスポンスにはコンテンツがありますないときレトロフィットは 'User'を作ることができますどのように? 'User'オブジェクトが既に削除されていたときに戻すのはなぜですか? – mklimek

+0

コールバックと連携しますか?また、改造のどのバージョンを使用していますか? –

+0

ちょっとボロディミール、それは動作します。コールバックの成功メソッドのシグネチャは 'public void success(レスポンスレスポンス1、レスポンスレスポンス){..}'で、ちょっと変わっています。 – ticofab

答えて

17

Retrofit 2.xレトロフィット< 2.のために、もはや有効ではない他の回答で述べたようにResponseCallbackを持っています。 Response<Void>タイプを使用します。

RxJava宣言:

@PUT Observable<Response<Void>> foo(); 

標準宣言:

@PUT Call<Response<Void>> bar(); 
+0

しかし、Webサービスコールにエラーがあっても、スローブロックではなく成功ブロックを実行します。 – MobileMon

+0

"抽象クラスokhttp3.ResponseBody"をretrofitとmoshiでシリアライズできません。2.3.0 –

+0

@GregEnnis間違ったタイプを使用すると、 'retrofit2.Response'の応答 –

8

解決策は、コメントでJake Whartonによって指摘されました。 ResponseCallbackを使用します。

EDIT:この応答はもはや

+0

ねえ、この答えのリンクは無効でした。 -_- ||| – codezjx

関連する問題