首页 文章

当我们有OkHttp时,为什么要使用Retrofit

提问于
浏览
64

使用OkHttp我们可以发出HTTP请求然后从服务器获得响应

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url(url)
  .build();
Response response = client.newCall(request).execute();

然后用Gson lib将响应转换为我们需要的对象 .

这是来自Square / OkHttp doc:

其请求/响应API的设计具有流畅的构建器和不变性 . 它支持同步阻塞调用和带回调的异步调用

我从stackOverFlow读到

如果可用,Retrofit会自动使用OkHTTP

.

所以我的问题是究竟是什么改造?

什么改造可以做到OkHttp不能?!

我认为OkHttp和Gson解决了请求API问题,那么Retrofit为我们解决了什么问题?

5 回答

  • 59

    使用OkHttp,我们可以发出HTTP请求然后从服务器获得响应...然后使用Gson lib将响应转换为我们需要的对象

    请注意,在您的代码段中,您跳过了两个值得注意的步骤:生成URL并使用Gson实际解析JSON .

    所以我的问题是什么才是改造?

    它用于生成URL(使用与特定REST API绑定的类型感知生成代码)并使用Gson实际解析JSON . 换句话说,它会执行您在代码段中跳过的内容 .

    而且,对于某些类型的REST操作(例如,POST),它有助于组装要提交的内容(例如,生成编码形式) .

    根据定义,您不需要使用Retrofit . 改造是由计算机程序员编写的计算机代码 . 其他人可以编写代码来做Retrofit所做的事情 .

    为什么Retrofit使用OkHttp

    Retrofit需要执行HTTP操作 . 它使用OkHttp,可用于OkHttp提供的所有内容:HTTP / 2和SPDY支持,可插拔拦截器等 .

  • 22

    如果您尝试在应用程序中映射服务器API(type-safing),则应使用改造 . Retrofit只是一个包装在okHTTP上的API适配器 .

    如果要输入安全性并使用API模块化交互代码,请使用改造 . 除此之外,okHTTP和Retrofit的基础性能,请求默认值等是相同的 .

    另外,我建议听Jesse Wilson(主要的Android HTTP客户端的开发者)播放this播客,在那里他深入探讨了Apache HTTP客户端,HTTPURLConnection,okHTTP和Retrofit的开发历史 .

  • 5

    Retrofit vs. OkHttp The reason is simple :OkHttp是一个纯HTTP / SPDY客户端,负责任何低级网络操作,缓存,请求和响应操作等等 . 相比之下,Retrofit是一个基于OkHttp的高级REST抽象构建 . Retrofit 2与OkHttp紧密结合,并大量使用它 .

    OkHttp Functions: 连接池,gzipping,缓存,从网络问题中恢复,同步和异步调用,重定向,重试......等等 .

    Retrofit Functions: URL操作,请求,加载,缓存,线程,同步......它允许同步和异步调用 .

  • 0

    Retrofit是Square的Android和Java REST客户端 . 它使通过基于REST的Web服务检索和上载JSON(或其他结构化数据)变得相对容易 . 在Retrofit中,您可以配置用于数据序列化的转换器 . 通常对于JSON,您使用GSon,但您可以添加自定义转换器来处理XML或其他协议 . Retrofit使用OkHttp库进行HTTP请求 . 因为它的功能,你应该使用okhttp的改造方便 .

  • 4

    Retrofit解决的问题是:从远程服务器获取对象的OKHttp代码是罗嗦的 .

相关问题