学习Retrofit
来源:互联网 发布:ae cc mac 破解补丁 编辑:程序博客网 时间:2024/06/06 16:20
转载请标明出处:http://blog.csdn.net/long117long/article/details/78257923
Retrofit是什么?做过Android开发的想必都知道,它是GitHub上java语言中star(24.3k,20171013 )最多的网络请求库之一。
网上有很多优秀的文章介绍如何使用Retrofit,这里我只想将我自己一开始学习使用Retrofit的过程记录下来。
1. 如何将Retrofit引用到工程中?
Retrofit目前有Retrofit1 和 Retrofit2 之分,在这里我们使用Retrofit2。
引用到Android Studio中:
2. 如何使用Retrofit请求http://www.baidu.com?
使用Retrofit,我第一个想到的是如何得到http://www.baidu.com 的结果,就像看网络通不通,使用 ping www.baidu.com 一样。
网络请求的地址在Retrofit中分为了两部分,一部分是baseUrl,一部分是后缀,而后缀的部分使用的注解。
先写注解部分的代码:
因为需要上网,所以需要在AndroidMenifest.xml中申请权限:
先写请求之前的代码:
请求的写法可以是同步的,也可以是异步的。
以下异步的写法,
需要注意的是,call.enqueue可以写在主线程,也可以在子线程。而回调是在主线程的,因此可以更新界面。
以下是同步的写法,
需要注意的,call.execute()是需要写在子线程的,如果写在主线程会抛出android.os.NetworkOnMainThreadException的异常。
注意,在baseUrl中写的是:http://www.baidu.com/ 。
到底要不要最后的 /,参看网上的说明大致意思是在Retrofit2中最好添加。
参看:http://blog.csdn.net/zxc123e/article/details/51722323 中的 “六、新的URL定义方式”
3. 想要使用"GET"、“POST”等请求数据怎么办?
上面的例子没有携带任何数据请求远端,而我们跟后台交互一般都会是请求一些数据,比如:查询存储在远端的某个关键字信息,提交一些本地数据到远端等等。
Retrofit已经封装了HTTP协议的请求方法(GET,POST,HEAD等),比如,要进行如下请求:
那么在创建Retrofit时的baseUrl应该写成:
而注解应该写成这样:
里面的注解“@Path”,是用于替换Url路径中的变量字符。
Retrofit封装一些常用的Url路径处理注解,有:@Path、@Query、@QueryMap、@Body、@Field等,可以自己查一下。
4. 处理Json字符串
我们从远端得到的数据通常是Json字符串的格式,我们可以使用其提供的Converter来做转换,比如:
甚至我们可以自定义converter。
那如何使用converter-gson呢?
首先,需要在工程中引入jar包:
在代码创建Retrofit时,添加gson的converter: .addConverterFactory(GsonConverterFactory.create()),整体代码如下:
本例中查询返回的结果大致如下:
创建相关的bean:
接口声明:
调用时的代码如下:
调用结果如下:
5. 能不能使用动态的Url?
我在刚开始接触Retrofit时,就有个疑问:请求的Url是在编码时以注解的形式写好的,那能不能在使用Retrofit时不提前写好,也就是说在代码调用时我再准备好我想请求的Url? 这个是可以的。
需要将注解这么写:
而调用代码如下:
阅读全文
0 0
- 学习Retrofit
- retrofit学习
- retrofit学习
- 学习Retrofit
- Retrofit学习
- Retrofit学习
- 学习Retrofit
- Retrofit源码学习笔记(1)一Retrofit
- Retrofit 1.9源码学习
- 学习Retrofit笔记
- Retrofit学习笔记
- Retrofit学习入门
- Rxandroid+Retrofit学习记录
- Retrofit+MVP模式学习
- Retrofit+RxJava 简单学习
- Retrofit学习笔记
- Retrofit入门学习
- 学习retrofit资料
- better-scroll api
- javascript中静态方法、实例方法、内部方法和原型的一点见解
- 关于线程问题的总结
- iOS tableview左滑删除不灵敏
- JVM 调优
- 学习Retrofit
- SSM框架下的redis缓存
- svn update提示svn is already locked
- 九、linux编辑器哪家强?出门左转找Qt!
- 论算法的重要性与乐趣
- SQLServer 及tableau中的回车符与换行符
- JDK,JRE,JVM这三者的联系与区别
- SVAC1.0逆扫描反变换反量化分析
- 优秀工程师-UITableView
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
汽车弹簧钢
弹簧钢多少钱
耐热弹簧钢
弹簧钢切割
耐磨弹簧钢
65mn弹簧钢圆钢
弹簧钢型号
冷轧65mn弹簧钢
弹簧钢板材
不锈钢弹簧钢片
高速弹簧钢
弹簧钢弓片
t10弹簧钢
普通弹簧钢
弹簧钢报价
65mn弹簧钢线材
65mn弹簧钢板材
弹簧钢棒料
弹簧钢垫片
特种弹簧钢
弹簧钢圆钢
65mn弹簧钢带材
65 弹簧钢
弹簧钢60si2mn
70弹簧钢
自动弹簧鱼钩图
不锈钢弹簧钩
无弹簧爆炸钩
简单自制探鱼器
开口弹簧销
自锁式气弹簧
老式弹簧锁内部结构图
老式弹簧锁内部结构
自锁气弹簧
弹簧门图片
门弹簧
室内木门选择
实木门开裂
地弹簧门图片
地弹簧门安装方法图
地弹簧门怎么拆