以前开发过程中很少碰到PUT请求,这次服务端给我来了两个PUT请求。


我就查了Retrofit官方文档,根据文档范例写了:

@Multipart    @PUT("sys/user/resetPassword")    Observable> 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> 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() {            @Override            public void onNext(LzyResult lzyResult) {            }        });

这样请求没问题了!

更多相关文章

  1. Android中使用PULL方式解析XML和XmlSerializer进行序列化
  2. Android(安卓)6.0 权限申请源码解析
  3. 移动接口开发:JAVA判断是android还是ios 端请求
  4. Gerrit跨平台合并提交
  5. SVN问题之——org.apache.subversion.javahl.ClientException: A
  6. Android笔记:Android(安卓)使用Intent拨打电话的两种方式以及差别
  7. Android(安卓)访问HTTP资源
  8. Android常见的按钮监听器实现方式
  9. Android(安卓)Dialog宽度match_parent

随机推荐

  1. Ubuntu 16.04 64bit 编译 Android(安卓)4
  2. interview-question
  3. Android(安卓)以singleInstance模式加载
  4. Context上下文的一些应用
  5. EditText常用属性【一】:空白提示/文本域
  6. android学习笔记29:simpleAdapter
  7. 别人看的书,拿来参考
  8. Android(安卓)自定义弹性ListView控件实
  9. 端外页面通过JavaScript唤醒Android(安卓
  10. Android项目结构和HelloWorld