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