When I try to create a delete method:
public interface ImageService { @DELETE("api/v1/attachment") Call<BaseResponse> delete(@Body DeleteModel deleteModel); }
I get the error which basically boils down to these lines from the stacktrace:
E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Failure delivering result java.lang.IllegalArgumentException: Non-body HTTP method cannot contain @Body. Caused by: java.lang.IllegalArgumentException: Non-body HTTP method cannot contain @Body.
How can I add a body to a delete method ?
I have searched here but found 3 not answers and nothing using retrofit.
If a DELETE request includes an entity body, the body is ignored [...] Additionally here is what RFC2616 (HTTP 1.1) has to say in regard to requests: an entity-body is only present when a message-body is present (section 7.2)
A successful response MUST be 200 (OK) if the server response includes a message body, 202 (Accepted) if the DELETE action has not yet been performed, or 204 (No content) if the DELETE action has been completed but the response does not have a message body.
You can send it with help of @FormUrlEncoded for example : @FormUrlEncoded @Headers("Content-Type: application/json") @POST("getclass/") Call<ExampleClass> getExampleClass(@Field("id") int id, @Field("name") String name);
A more simplified answer.
@HTTP(method = "DELETE", path = "/api/analysis_delete", hasBody = true) Call<Analysis_Delete_RequestResult_Api10> analysis_delete_api10(@Field("seq") String seq);
This will do the trick.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With