外观
Retrofit 如何将 Java 接口转换为 HTTP 请求?其动态代理机制是如何实现的?
标准回答
Retrofit.create 接口时生成 Java 动态代理;调用接口方法后,代理解析并缓存 @GET/@POST、@Path/@Query/@Body 等定义,构建请求,通过 Call.Factory(常见是 OkHttp)执行,再由 Converter 转换响应、CallAdapter 适配返回类型。
通俗例子
调用 api.getUser(7),代理读取路径和参数注解,发出相应请求,再把 JSON 转成 User;方法本身并没有手写网络代码。
深入解释
**接口方法为什么能发请求:**Retrofit 为你声明的接口创建实现代理。调用方法时,它读取注解和参数,组装 URL、请求体以及响应转换规则,再交给 HTTP 客户端执行。
**为什么仍可能阻塞:**代理只负责把方法映射成请求,不自动保证每种调用形式都在后台。使用同步 execute 仍会阻塞调用线程,异步形式也要明确回调线程与取消规则。
内容来源
- Android · AI Agent 知识手册 · 原条目
6.2.1