@DELETE方法不支持(非body HTTP方法不能包含@Body或@TypedOutput.)

san*_*ndy 49 rx-java retrofit

@DELETE("/job/deletejob")
 Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

非身体HTTP方法不能包含@Body或@TypedOutput

谁能帮助我从这里出来?

And*_*dEx 166

我最近使用过这个官方解决方法:

@HTTP(method = "DELETE", path = "/job/deletejob", hasBody = true)
Observable<JobDeleteResponseModel> jobDelete(@Body JobDeleteRequestModel model);
Run Code Online (Sandbox Code Playgroud)


小智 8

改变

@DELETE("/job/deletejob")
Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model);
Run Code Online (Sandbox Code Playgroud)

到

@HTTP(method = "DELETE", path = "/job/deletejob", hasBody = true)
Observable<JobDeleteResponseModel> jobDelete( @Body JobDeleteRequestModel model);
Run Code Online (Sandbox Code Playgroud)

区别在于

@DELETE("/job/deletejob") // For DELETE without body
@HTTP(method = "DELETE", path = "/job/deletejob", hasBody = true) // For DELETE with body
Run Code Online (Sandbox Code Playgroud)


Shi*_*mar 7

试试这个它的工作

@HTTP(method = "DELETE", path = "api/v3/delete", hasBody = true)
Call<ResponseBody> RESPONSE_BODY_CALL(@Header("Authorization") String authorization, @Body HashMap<String, List> stringListHashMap);
Run Code Online (Sandbox Code Playgroud)

或检查 https://github.com/square/retrofit/issues/974


Adi*_*til 6

需要指定参数
method、path、hasBody

Kotlin方式

@HTTP(method = "DELETE", path = "event/eventRemovePicture", hasBody = true)
fun callDeleteImage(
    @Body body: RequestBody
): Call<RemoveEventPictureResponse>
Run Code Online (Sandbox Code Playgroud)


Mak*_*and 6

我有类似的错误。

在我的情况下,我@GET在接口中使用,但后来我将其更正为@POST方法并且它起作用了。


Ram*_*shi 5

科特林代码:

path如果接口方法的第一个参数是用 @Url 注释的 url,则不需要示例:

@HTTP(method = "DELETE", hasBody = true)
fun deleteStudentFromDatabase(
    @Url url: String,
    @Body payload: StudentModel
 ): Observable<Any>
Run Code Online (Sandbox Code Playgroud)

如果接口方法的第一个参数不是 url,则使用它

    @HTTP(method = "DELETE", path = "{urlPath}", hasBody = true)
    fun deleteStudentFromDatabase(
        @Body payload: StudentModel,
        @Path("urlPath") url: String
     ): Observable<Any>
Run Code Online (Sandbox Code Playgroud)