Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send a HTTP-delete with a body in retrofit?

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.

like image 975
HopefullyHelpful Avatar asked Jan 06 '17 15:01

HopefullyHelpful


People also ask

Can we send body in HTTP delete request?

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)

Does delete request have response body?

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.

How do you send an object in retrofit?

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);


1 Answers

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.

like image 69
March3April4 Avatar answered Sep 19 '22 20:09

March3April4