webentwicklung-frage-antwort-db.com.de

Wie führe ich eine DELETE-Anfrage ohne Rückgabetyp oder Rückruf durch? [Nachrüstung]

Ich muss eine DELETE-Anforderung mit Retrofit ausführen. Mein Code-Ausschnitt der Benutzeroberfläche sieht also so aus:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId);

Aber ich bekomme den Fehler:

Java.lang.IllegalArgumentException: ApiItem.deleteItem: Muss entweder einen Rückgabetyp oder einen Rückruf als letztes Argument haben.

Gemäß den Regeln der Rest-API sollte ich jedoch keine Antwort auf die DELETE-Anforderung erhalten. Wie soll ich es in der Schnittstelle angeben?

Vielen Dank.

10
Mark Korzhov

Sie müssen Callback als letztes Argument in die Anforderungsmethode einfügen, wenn Sie die Methode void verwenden möchten. Sie könnenCallback<Response> verwenden.

Sie müssen dies ändern:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId);

zu:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId, Callback<Response> callback);

Oder Sie können nur Response zurückgeben

@DELETE("/api/item/{id}")
Response deleteItem(@Path("id") int itemId);
28

In Retrofit 2.0 können Sie die Anrufschnittstelle für das Ergebnis Ihrer Anfrage wie folgt verwenden.

@DELETE("/api/item/{id}")
Call<Response> deleteItem(@Path("id") int itemId);

...

Call<Response> call = YourServiceInstance.deleteItem(10);
call.enqueue(new Callback<Response>() {
...
});
4
BurtK
@FormUrlEncoded
@HTTP(method = "DELETE", path = "manage-feed", hasBody = true)
Call<ResponseBody> deletePost(@Field("post_id") Integer postId, @Field("share_id") Integer sharedMapId);
0
Dishant Kawatra