Android Retrofit 实现图文上传-文字参数类型
2016-09-22 17:25
681 查看
版权声明:分享技术,传播快乐。如果本博客对你有帮助,请在我的博客首页为我打赏吧!
目录(?)[+]
回顾
案例讲解
接口
解决问题
上传接口定义
上传头像
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。
Android Retrofit 实现文字(参数)和多张图片一起上传 博客中,我们详细介绍了多张图片和文字参数上传的具体原理和实现,今天我们重点说说文字参数类型的问题。
Post请求抓包信息:
接口定义:
从抓包信息中看到文字类型的参数字段名是“data”,值是“jdsjlzx”。
其中的Content-Type信息如下:
无论何种请求,Content-Type类型不能错。请求失败,排查错误首先从这个Content-Type开始,其次是Content-Disposition。
下面我们从一个真实案例来说一说这个Content-Type。
从上面图片中就看到上传头像需要传递userId、token等参数。
后台接口开发人员测试接口一般在web上面调试好,移动端开发人员就可以根据接口进行联调了。
web端上传头像时请求抓包信息如下所示:
上图红色箭头所指之处就是我们需要注意的地方。
Content-Type类型不是“application/json”,而是“text/plain”。
注意:
“@Part(“data”) String des”在Post请求中默认的Content-Type类型就是“application/json”
接口定义如果按照前面文章介绍的那样写,如下图所示,肯定是不行的。
经过网上查资料,我们找到了解决办法,参考:http://stackoverflow.com/questions/37072368/retrofit-body-with-multipart-having-issue
上传接口定义
上传头像
主要代码如下图所示:
这里有个toRequestBody函数,主要功能是将文字参数类型转换为“text/plain”。
toRequestBody函数如下图所示:
上传头像请求结果抓包信息:
“userId”、“token”等文字参数的类型成功转换为了“text/plain”类型。
大功告成,看看服务器返回结果吧。
That’s all, thank you.
目录(?)[+]
回顾
案例讲解
接口
解决问题
上传接口定义
上传头像
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。
回顾
在Android Retrofit 实现文字(参数)和多张图片一起上传 博客中,我们详细介绍了多张图片和文字参数上传的具体原理和实现,今天我们重点说说文字参数类型的问题。
Post请求抓包信息:
接口定义:
从抓包信息中看到文字类型的参数字段名是“data”,值是“jdsjlzx”。
其中的Content-Type信息如下:
<code class="hljs http has-numbering"><span class="hljs-attribute">Content-Type</span>: <span class="hljs-string">application/json; charset=UTF-8</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>
无论何种请求,Content-Type类型不能错。请求失败,排查错误首先从这个Content-Type开始,其次是Content-Disposition。
下面我们从一个真实案例来说一说这个Content-Type。
案例讲解
接口
从上面图片中就看到上传头像需要传递userId、token等参数。
后台接口开发人员测试接口一般在web上面调试好,移动端开发人员就可以根据接口进行联调了。
web端上传头像时请求抓包信息如下所示:
上图红色箭头所指之处就是我们需要注意的地方。
Content-Type类型不是“application/json”,而是“text/plain”。
<code class="hljs http has-numbering"><span class="hljs-attribute">Content-Type</span>: <span class="hljs-string">text/plain; charset=UTF-8</span></code><ul class="pre-numbering"><li>1</li></ul><div class="save_code tracking-ad" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>
注意:
“@Part(“data”) String des”在Post请求中默认的Content-Type类型就是“application/json”
接口定义如果按照前面文章介绍的那样写,如下图所示,肯定是不行的。
经过网上查资料,我们找到了解决办法,参考:http://stackoverflow.com/questions/37072368/retrofit-body-with-multipart-having-issue
解决问题
“@Part(“data”) String des”在Post请求中默认的Content-Type类型是“application/json”,这就说明我们在接口中不能再使用@Part注解了,我们需要在代码中指定类型。上传接口定义
上传头像
主要代码如下图所示:
这里有个toRequestBody函数,主要功能是将文字参数类型转换为“text/plain”。
toRequestBody函数如下图所示:
上传头像请求结果抓包信息:
“userId”、“token”等文字参数的类型成功转换为了“text/plain”类型。
大功告成,看看服务器返回结果吧。
That’s all, thank you.
相关文章推荐
- Android Retrofit 实现图文上传-文字参数类型
- Android Retrofit 实现(图文上传)文字(参数)和多张图片一起上传
- Android Retrofit 实现文字(参数)和多张图片一起上传
- Android Retrofit 实现文字(参数)和多张图片一起上传
- Android Retrofit 实现图文上传(二)
- 【Android实战】----基于Retrofit实现多图片/文件、图文上传
- Retrofit2.0 实现图文(参数+图片)上传方法总结
- 【Android实战】----基于Retrofit实现多图片/文件、图文上传
- 【Android实战】----基于Retrofit实现多图片/文件、图文上传
- 安卓学习笔记---Retrofit2.0 实现图文(参数+图片)上传方法总结
- Android Retrofit实现多图片/文件、图文上传功能
- 【Android实战】----基于Retrofit实现多图片/文件、图文上传
- Android Volley网络请求框架 实现post方法并带Map参数上传
- android使用HttpURLConnection实现带参数文件上传
- RxAndroid组合Retrofit 实现文件上传 post get
- android使用HttpURLConnection实现带参数文件上传
- Android Retrofit2.0实现文件上传和下载
- Android中Okhttp3实现上传多张图片同时传递参数
- Android中ksoap实现SOAP远程调用,支持字符串、数值、日期类型参数
- Android 仿照微信发说说,既能实现拍照,选图库,多图案上传 使用Retrofit2.0技术