使用 OkHttp 我们可以发出 HTTP 请求然后从服务器获得响应:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
然后使用 Gson lib 将响应转换为我们需要的对象。
这是来自 Square/OkHttp 文档:
它的请求/响应 API 设计有流畅的构建器和不变性。它支持同步阻塞调用和带回调的异步调用
我从 Stackoverflow 上读到:
如果可用,Retrofit 会自动使用 OkHTTP。
所以我的问题是:
- Retrofit 到底是做什么用的?
- 有什么 Retrofit 可以做而 OkHttp 做不到的?
我觉得OkHttp和Gson解决了request API的问题,但是retrofit给我们解决了什么问题呢?
原文由 Mehrdad Faraji 发布,翻译遵循 CC BY-SA 4.0 许可协议
请注意,在您的代码片段中,您跳过了两个值得注意的步骤:生成 URL 和使用 Gson 实际解析 JSON。
它用于生成 URL(使用绑定到特定 REST API 的类型感知生成代码)并使用 Gson 实际解析 JSON。换句话说,它执行您在代码片段中跳过的操作。
此外,对于某些类型的 REST 操作(例如,POST),它有助于组装要提交的内容(例如,生成编码形式)。
根据定义,您不需要使用 Retrofit。 Retrofit 是计算机代码,由计算机程序员编写。其他人可以编写代码来完成 Retrofit 所做的事情。
Retrofit 需要进行 HTTP 操作。它在可用的地方使用 OkHttp,用于 OkHttp 提供的所有内容:HTTP/2 和 SPDY 支持、可插入拦截器等。