Retrofit - 12 retrofit中网络请求接口实例解析

本文介绍了Retrofit中如何创建网络请求接口,强调在注解中指定完整URL时,可省略BaseUrl的设置。通过ServiceMethod类了解接口方法的封装,包含网络请求配置和URL等关键参数。
摘要由CSDN通过智能技术生成
public interface MyInterface {
  @GET(“…/…”)
  Call<List<MyResponse>> getCall();
}
“…/…” 前面一部分是baseUrl地址,后面一部分是注解的那部分地址。

注意:如果我们在注解后面参数已经设置一个完整的URL地址的话,那我们在设置Retrofit对象的时候可以不设置BaseUrl这个参数。


以下是 Retrofit.java 类中的代码:

// Single-interface proxy creation guarded by parameter safety.
@SuppressWarnings("unchecked") 
  public <T> T create(final Class<T> service) {
    // 对传进来的接口字节码进行验证
    Utils.validateServiceInterface(service);
    // 标志位,表示是否需要提前验证和解析这个接口
    if (validateEagerly) { 
      eagerlyValidateMethods(service);
}
// 使用的动态代理进行操作
    return (T) Proxy.newProxyInstance(service.getClassLoader(), new Class<?>[] { service },
        new InvocationHandler() {
          private final Platform platform = Platform.get();
          @Override // 真正解析接口操作的地方
          public Object invoke(Object proxy, Method method, @Nullable Object[] args)
              throws Throwable {
            // If the method is a method from Object then defer to normal invocation.
            if (method.getDeclaringClass() == Object.class) {
              return method.invoke(this, args);
            }
            if (platform.isDefaultMethod(method)) {
              return platform.invokeDefaultMethod(method, service, proxy, args);
            }
            // 重要的三行代码
            ServiceMethod<Object, Object> serviceMethod =
                (ServiceMethod<Object, Object>) loadServiceMethod(method);
OkHttpCall<Object> okHttpCall = 
             new OkHttpCall<>(serviceMethod, args);
            return serviceMethod.adapt(okHttpCall);
          }
        });
  }

boolean isDefaultMethod(Method method) {
   return false;
}

ServiceMethod:对应一个接口的方法,它把它做好了封装,在这个里面大家以后会看到有众多的网络配置请求参数,还有包括URL等等。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值