@DELETE("/job/deletejob")
Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model);
am getting this error:
Non-body HTTP method cannot contain @Body or @TypedOutput
I've used this official workaround recently:
@HTTP(method = "DELETE", path = "/job/deletejob", hasBody = true)
Observable<JobDeleteResponseModel> jobDelete(@Body JobDeleteRequestModel model);
@HTTP(method = "DELETE", path = "api/v3/delete", hasBody = true)
Call<ResponseBody> RESPONSE_BODY_CALL(@Header("Authorization") String authorization, @Body HashMap<String, List> stringListHashMap);
You need to specify parameters
method, path, hasBody
Kotlin way
@HTTP(method = "DELETE", path = "event/eventRemovePicture", hasBody = true)
fun callDeleteImage(
@Body body: RequestBody
): Call<RemoveEventPictureResponse>
I had similar error.
In my case I was using @GET
in Interface but then I corrected it to @POST
method and it worked.
Change
@DELETE("/job/deletejob")
Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model);
to
@HTTP(method = "DELETE", path = "/job/deletejob", hasBody = true)
Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model);
The difference is in
@DELETE("/job/deletejob") // For DELETE without body
@HTTP(method = "DELETE", path = "/job/deletejob", hasBody = true) // For DELETE with body
Kotlin Code :
path
is not required if your first argument to interface method is a url annotated with @Url Example :
@HTTP(method = "DELETE", hasBody = true)
fun deleteStudentFromDatabase(
@Url url: String,
@Body payload: StudentModel
): Observable<Any>
If first argument to interface method is not a url then use this
@HTTP(method = "DELETE", path = "{urlPath}", hasBody = true)
fun deleteStudentFromDatabase(
@Body payload: StudentModel,
@Path("urlPath") url: String
): Observable<Any>
@HTTP(method = "DELETE", path = "{urlPath}", hasBody = true)
Also this is working fine. It happens because the request contains a body but we have not defined that yet.
Retrofit 2, i have change the below code from this
@DELETE("example/user/{id}/list")
suspend fun deleteUserList(@Path(value = "id", encoded = false)key: Int, @Body request: DeleteUserListRequest): Response<BaseResponse>
to
@HTTP(method = "DELETE", path = "example/user/{id}/list",hasBody = true)
suspend fun deleteUserList(@Path(value = "id", encoded = false)key: Int, @Body request: DeleteUserListRequest): Response<BaseResponse>
Above code is working for me
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.