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.

  • TimerTask vs Thread.sleep vs Handler postDelayed - genaueste zu nennen Funktion alle N Millisekunden?
  • Wähle mindestens eine aus jeder Kategorie?
  • Setzen Sie die Sichtbarkeit im Menü programmgesteuert android
  • #if in java, wie in c preprocessors
  • Fragmente, die mit DrawerLayout / NavigationView überlappen
  • So senden Sie Google Maps Ortsinfo per SMS als Link
  • 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.

  • Android Arabisch Sprache
  • Projekt enthält bereits Modul mit diesem Namen - Android Studio
  • Brauchen Sie Hilfe, um einen Unit-Test mit Mockito und JUnit4 zu schreiben
  • Kann die alte javaCompile-Aktion nicht löschen, vielleicht hat sich der Klassenname geändert
  • Versuchen, einen Knopf zu zeichnen: wie man einen Strich färbt und wie man einen Gradienten an den Boden "ausrichten" kann, ohne die Höhe zu kennen?
  • Was ist die erschöpfende Liste aller "android.intent.action" -Aktionen, die im Android SDK verfügbar sind?
  • 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.