Android Retrofit Put请求

以前开发过程中很少碰到PUT请求,这次服务端给我来了两个PUT请求。
这里写图片描述
这里写图片描述
我就查了Retrofit官方文档,根据文档范例写了:

@Multipart
    @PUT("sys/user/resetPassword")
    Observable<HttpResult<LzyResult>> resetPassword(
    @Part("telephone") RequestBody telephone, @Part("password") RequestBody pwd);

结果如下:
这里写图片描述
然后我用postman测试一波:
这里写图片描述
可见我的提交方式是 Content-Type: multipart/form-data; 服务器不是根据这种数据类型接收的,所以报了参数为空。
接着我使用x-www-form-urlencoded 这种提交方式测试一波:
这里写图片描述
终于成功了!!!这种提交方式不就是使用POST请求是的吗,于是我改变请求的方式。

@FormUrlEncoded
    @PUT("sys/user/resetPassword")
    Observable<HttpResult<LzyResult>> resetPassword(@Field("telephone") String telephone,
                                                    @Field("password") String pwd);

嗯 是的 这种提交方式成功了!
这里写图片描述

第二个请求是需要我直接传一段json到服务器,而且后端开发在swagger上写出根据sysUser这个,于是我效仿我第一个请求的两种方式都失败了,还是使用postman 先测通再说。
这里写图片描述
记得选择json,他会给你添加一个请求头说明提交方式”Content-Type: application/json”,这样才能成功,不然报415错误。
retrofit请求如下:

 @Headers({"Content-Type: application/json"})
 @PUT("sys/user/updateUserInfo")
 Observable<HttpResult<LzyResult>> modifyUserInfo(@Body RequestBody userinfo);
 final String jsonString = JSON.toJSONString(user);
        LogUtils.e(TAG, "reqModifyUserInfo: jsonString:" + jsonString);
        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=UTF-8"), jsonString);
        mModel.modifyUserInfo(requestBody, new LzyCallback<LzyResult>() {
            @Override
            public void onNext(LzyResult lzyResult) {

            }
        });

这样请求没问题了!
这里写图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值