在闲暇时间撸了这段代码,其实早就有这种想法了,奈何自己太懒,一直拖到现在,还请各位老铁见谅。写这个也算是自己在工作中的一些总结。踩了很多坑,希望对老铁们有所帮助,话不多说,开整!
本篇主要包含POST、GET请求,不同的传参方式,以及上传单文件(单图)、多文件(多图)、数组,以及添加签名、公共参数等。
![](https://img.haomeiwen.com/i6940613/e3b47a85ab99d2c5.png)
app的build文件中配置
![](https://img.haomeiwen.com/i6940613/7b64af6a52fabc50.png)
获取头像
![](https://img.haomeiwen.com/i6940613/1abc6b9f44c9d105.png)
1.1 map方式
需要注意map方式要添加@Multipart和@PartMap
![](https://img.haomeiwen.com/i6940613/ab689fec0cdcf709.png)
map是参数的集合,需要上传的参数根据定义的map来上传多个参数。
Constant.BASE_URL:baseUrl,这里说明一下,baseurl要以“/”结尾,不然会出错
其中onSubscribe():方法可忽略,也可添加加载框
onNext():方法是请求接口并成功返回后执行的,在这里进行回调后的操作
onError():方法是错误返回,可能会出现json解析错误,404等错误
onComplete():是请求完成后执行的方法,这里可以关闭加载框
MeBean:是后台返回json的实体类(具体参考demo)
1.2 get请求
需要注意GET对应参数要以@Field形式
![](https://img.haomeiwen.com/i6940613/e9f5cd4d4b329d95.png)
freeweather是baseUrl后面需要拼接的最后一段,在之后就是具体需要上传的参数了,如下图
![](https://img.haomeiwen.com/i6940613/cfabf2035f5af438.png)
1.3 post请求
需要注意POST要添加@FormUrlEncoded对应参数要以@Field形式
![](https://img.haomeiwen.com/i6940613/a869be859793afa2.png)
1.4 上传数组/集合
![](https://img.haomeiwen.com/i6940613/bd07ea31cc8559da.png)
需要注意数组参数后面一定要加"[ ]"
1.5 上传图片(单张)
![](https://img.haomeiwen.com/i6940613/699cc62f60532c02.png)
map是一起上传的其他参数,如uid、token等
file是上传的文件
具体的操作流程,如下图。至于怎么选择图片文件,demo中也有方法,需要了解的亲,可以在demo中查看
![](https://img.haomeiwen.com/i6940613/5c6f5f868341441b.png)
1.6 上传图片(多张)
![](https://img.haomeiwen.com/i6940613/83401ded1283c270.png)
和上面上传单张图片几乎一样,只是上传多张图片的files换成了List<>形式。上传多图的方式,其实就是把选择的图片进行了遍历,如下图
![](https://img.haomeiwen.com/i6940613/4fb66ff54be99386.png)
“add_pics[]” 这个参数名,是后台定义的参数名,注意参数名后面也要添加"[ ]"
2.1 添加公共参数
![](https://img.haomeiwen.com/i6940613/59f8d284f8dbcdf1.png)
在HttpManager里的getApiService()中放开addInterceptor(new AddQueryParameterInterceptor()),然后添加公共参数即可
![](https://img.haomeiwen.com/i6940613/c137089c3a4641f0.png)
formBody的addEncoded()中添加签名和公共参数 (key,value)形式
2.2 日志打印
“我是如图”中所示,log()中的message是后台返回的json,在这里可以查看后台返回的参数,以及错误日志
![](https://img.haomeiwen.com/i6940613/22425e0d48617f4c.png)
2.3 超时设置
有些时候可能需要设置网络连接时间,在“我是如图”中的client中,设置网络请求超时时间
总结
demo中涵盖了日常用到的几乎所有请求方式,如果还有其他疑问可添加笔者QQ:499164592,备注简书即可。
如果对Retrofit的使用不太懂的话,可自行百度,祝君学习愉快
项目中应用到的三方库superTextView ,XPopup,PictureSelector 可参考demo中的链接
最后附上demo链接https://github.com/XD-Z/RetrofitNetwork
如果本文对你还有所帮忙,还请点个赞支持一下,感谢~
网友评论