OkHttp官网-Fratures(Calls)翻译

4 篇文章 0 订阅
3 篇文章 0 订阅

继续OkHttp官网的翻译,今天翻译的是Features模块中的Calls页,原文地址:https://square.github.io/okhttp/features/calls/

Calls

HTTP客户端的工作是接受请求并产生响应。这在理论上很简单,但在实践中却很棘手。

Requests

每个HTTP请求都包含一个URL,一个请求方式(像 GET 或者 POST)和一个请求头列表。这些请求也可能包含一个body:一个明确类型的数据流

Responses

包含一个code,headers和一个可以可选的body的内容 对应 一个请求的结果。

这句感觉翻译的不好,大家可以自己体会下。

The response answers the request with a code (like 200 for success or 404 for not found), headers, and its own optional body.

重写请求

当你创建一个OkHttp的HTTP请求时,其实你是在上层编写代码。为了正确性和有效性,OkHttp将会在发送请求时重写它。

OkHttp也许会添加一些在原始的请求上缺省的头,包括Content-Length,Transfer-Encoding,User-Agent,Host,ConnectionContent-Type。在透明的响应压缩(Transparent response compression)时,如果Accept-Encoding不存在,将会添加Accept-Encoding头。如果你要获取cookies,OkHttp将会添加cookie头。

有些请求会使用到缓存。当缓存不是最新的时候,如果有新内容,OkHttp将会发送一个有条件的GET请求去下载最新的内容。这需要添加像If-Modified-SinceIf-None-Match这样的头。

重写响应

如果要使用透明压缩, OkHttp会删除掉相应的相应头Content-EncodingContent-Length,因为它们不能使用在无压缩的响应内容上。

如果GET请求(下载缓存内容)成功,响应内容将会把缓存和网络内容按照相关规则合并。

后续请求

当您请求的URL需要改变时,web服务器将返回一个响应代码,如302,以指示重定向到新的URL。OkHttp将跟随重定向来请求新的响应。

如果响应发出授权验证,OkHttp将要求 Authenticator(如果配置了Authenticator)提供验证。如果Authenticator提供了凭据(credential),则会重新尝试包含该凭据的请求。

请求重试

有时连接会失败:要么池连接失效,断开连接,要么无法访问web服务器本身。这时如果有可用的路由,OkHttp将用不同的路由重试请求。

请求

通过重写、重定向、跟踪和重试,您的一个简单的请求可能会产生许多请求和响应。OkHttp使用Call来模拟通过许多中间请求和响应来满足你的请求的任务。通常这并不是很多。但令人欣慰的是,即使您的url被重定向或故障转移到另一个IP地址,您的代码会继续执行。

执行调用的方式有两种:

同步:现在在响应回来之前会阻塞

异步:您在任何线程上排队请求,并在响应回来时在另一个线程上被回调。

请求可以在任何线程取消。这将使请求失败。如果请求还没有完成,写入请求体或读取响应体的代码将会在请求被取消时将得到IOException异常。

分发

对于同步请求,当前线程负责管理您发出的请求。同时请求太多会浪费资源;太少会增加延迟。

对于异步请求,Dispatcher实现最大并发请求策略。您可以设置每个web服务器的maximums(默认为5),以及overall(默认为64)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值