Retrofit, Rückruf für 204 Kein Inhalt Antwort?

Auf Android habe ich zunächst eine Retrofit-Schnittstelle implementiert:

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

Der Server gibt bei erfolgreichem Löschen 204 KEIN INHALT zurück. Dies führte dazu, dass der Rückruf einen Fehler auslöst, mit retrofit.RetrofitError: End of input at character 0 of , da es ein User Objekt mit der Antwort erwartete.

Ich habe es dann so umgeschrieben, mit Void anstelle von User :

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

Aber ich bekomme den gleichen Fehler aus dem Rückruf. Was ist der richtige Weg, um das zu beheben? Vielen Dank.

  • RxJava + Retrofit lange Polling
  • Verwenden von Retrofit in Android
  • Gibt es ein Entwicklungsmuster, das einen IntentService für Netzwerkanforderungen ersetzen kann?
  • Java.lang.NoClassDefFoundError in Android Studio retrofit2.Utils
  • RxJava und Retrofit2: NetworkOnMainThreadException
  • Retrofit - Intercept Antworten weltweit
  • OkHttp + Picasso + Nachrüstung
  • Ist Firebase richtig für meine Android App?
  • 2 Solutions collect form web for “Retrofit, Rückruf für 204 Kein Inhalt Antwort?”

    Retrofit 2.x hat keinen ResponseCallback wie in der anderen Antwort erwähnt. Sie möchten einen Response<Void> -Typ verwenden.

    Die Erklärung von RxJava:

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

    Die Standarderklärung:

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

    Die Lösung wurde von Jake Wharton in den Kommentaren hervorgehoben. Verwenden Sie ResponseCallback.

    EDIT: Diese Antwort gilt nicht mehr für Retrofit <2.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.