Retrofit踩坑之Delete请求
Posted Anonymous-OS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Retrofit踩坑之Delete请求相关的知识,希望对你有一定的参考价值。
来到一家新的公司,时间直接不够用了,版本出的飞起,很长时间没总结自己最近学到的东西了(其实也没学什么)!
公司的后台是一个搞php的大兄弟,我们进行对接。在对接的过程中,鄙人不才,一般都是用的POST和GET的请求居多,确实对DELETE请求接触不多,这次后台的大兄弟就直接让我提交DELETE请求来进行实体的删除操作。那就来呗,不就是和POST差不多嘛,代码如下:
@DELETE("bean/delete")
Observable<CompanyBean> daleteBean(@Query("id") String id);
APIService.Retrofit().deleteBean(userId)
.subscribeOn(Schedulers.io())
.observeOn(androidSchedulers.mainThread())
.subscribe(new BaseSubscriber<CommonBean>(this)
@Override
public void onNext(CommonBean commonBean)
//删除成功
);
结果是失败的,php的大兄弟说这样好像不对,应该是提交请求体。
好!那就提交请求体
代码进行修改:
@DELETE("bean/delete")
Observable<CommonBean> deleteBean(@Body DeleteUserBody body);
这下算是请求体了吧,运行看结果
貌似是说这个框架不能包含@Body的注解,你妹啊!retrofit这么垃圾吗?看retrofit官网吧,根据我自己看完文档的理解@POST、@GET等注解其实也是演化的基础上来的,
其实他的原型是@HTTP(method = "POST", path = "/revoke", hasBody = false),显然很明显
1、method :请求方式
2、path :路径
3、hasBody :参数体
那就根据这个改一下呗
@HTTP(method = "DELETE", path = "location/delete", hasBody = true)
以上是关于Retrofit踩坑之Delete请求的主要内容,如果未能解决你的问题,请参考以下文章