Retrofit 源码导读一

Retrofit 是如何 创建 一个http 请求的?

第一步:创建 Retrofit.Builder

 Retrofit.Builder builder = new Retrofit.Builder();

第二步:builder 有很多属性 但是 比较重要的 几个 也是必须设置的

  builder.baseUrl("www.baidu.com");
  builder.addCallAdapterFactory();
  builder.addConverterFactory();

注:以上三个 属性必须设置否则会报错,运行不起来 (实际情况中我们 还需要设置 client(OkHttpClient) 如果不设置 retrofit 会默认一个)

a、 baseUrl 如果 不设置 baseUrl 会报错误 错误

  "Base URL required."
a:如果你项目中 一直使用全路径,这个配置 可以随便填一个地址(为了 适配 注解中 url 占位 及 url 路径 的使用方式 所以 retrofit 规定 必须设置 url)
b、设置的属性 时怎么绑定到 OkHttpCall 里面去的?(以下 四个代码点 核心绑定过程。 第四点 实现)
第一个点:从 Retrofit creat 方法中

主要作用:是 绑定 Observable 返回值 和方法;(具体代码 我们可以再 Retrofit 源代码中找到)

 public <T> T create(final Class<T> service) {
    Utils.validateServiceInterface(service);
    if (validateEagerly) {
      eagerlyValidateMethods(service);
    }
    // 通过Proxy 代理类 生成 api 类 的对象(所谓 api 类 就是 我们 写 注解的 那个接口类 下面注释)
    return (T) Proxy.newProxyInstance(service.getClassLoader(), new Class<?>[] { service },
        new InvocationHandler() {
        // 当 你调用某个 接口方法 时 触发这里,..比如 demo api 中调用 ge
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值