本文地址
注入
在build.gradle(module:app)注入依赖
compile'com.squareup.retrofit2:retrofit:2.3.0'
入门
//清单文件,权限
<uses-permission android:name="android.permission.INTERNET" >
//自己编写一个网路请求接口
public interface IApi {
@GET("https://www.baidu.com/")
Call<ResponseBody> get();
}
@Url <url请求地址>
@GET()
Call<ResponseBody> get(@Url String url);
上面两种写法等价,用@Url 标签更好,拓展性强
//最简单的Retrofit对象
Retrofit retrofit =newRetrofit.Builder().baseUrl("https://www.baidu.com/").build();
//初始化IApi
IApi api = retrofit.create(IApi.class);
//调用请求get方法
Call call = api.get("https://www.baidu.com/");
call 是回调类,用两种回调方式:同步,异步
异步
call.enqueue(newCallback() {
@Override
public voidonResponse(Call call, Response response) {
Log.e("测试","---"+response.body().source());
}
@Override
public voidonFailure(Call call, Throwable t) {
Log.e("测试","---"+t.toString());
}
});
同步
call.execute();
一般在使用时,都是使用异步回调比较多吧
事务中断 :现在大部分网络请求框架都支持事务中断
call.cancel();
总结
就是想写一篇自己能看得懂的文章,毕竟不是每个人都能弄清楚或者直接看懂源码
总结以下几点
1.Retrofit对象的创建是用到单例模式,也就是说内存里面有且仅存在一个Retrofit对象,所以Retrofit创建时候,你可以把它放在Application类里面调用就行了
2.Retrofit对象的baseUrl(url)方法是一定要写的,不写就报java.lang.IllegalStateException: Base URL required.异常
3.暂时想那么多
网友评论