19

Android では、最初に次のような Retrofit インターフェースを実装しました。

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

削除が成功すると、サーバーは 204 NO CONTENT を返します。これにより、コールバックが で失敗を引き起こしていました。これは、応答でオブジェクトが返さretrofit.RetrofitError: End of input at character 0 ofれることを期待していたためです。User

Void次に、代わりにを使用して、次のように書き直しましたUser

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

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

4

3 に答える 3

29

Retrofit 2.xResponseCallback他の回答で述べたように、もはやありません。タイプを使用したいResponse<Void>

RxJava 宣言:

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

標準宣言:

@PUT Call<Response<Void>> bar();
于 2015-12-04T21:22:50.590 に答える
9

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

編集:この応答は、Retrofit < 2 では有効ではなくなりました。

于 2015-01-14T16:43:15.650 に答える