OkHttp Wiki翻译(二)调用

来源:互联网 发布:上海网络交换机回收 编辑:程序博客网 时间:2024/06/05 10:03

 

原文在此:https://github.com/square/okhttp/wiki/Calls

下面是翻译:

 

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

请求

       每个HTTP请求都包含一个URL,一个方法(例如GET或POST)和一个请求头列表。 请求也可能还包含一个请求体:一个特定内容类型的数据流。

响应

      响应使用一个响应码(例如200表示请求成功或404表示找不到请求资源),响应头和可选的响应体来应答请求。

重写请求

       当您向OkHttp提交HTTP请求时,您正在以一种高级别的方式描述请求:“使用这些请求头获取此URL代表的内容”。考虑到正确性和效率,OkHttp在发送请求之前会对您提交的请求进行重写。

       OkHttp可能会在原始请求中添加不存在的请求头,包括Content-Length,Transfer-Encoding,User-Agent,Host,Connection和Content-Type。为了透明响应压缩,它将会在请求头中添加Accept-Encoding字段, 除非其在请求头中已经存在。如果你有cookie,OkHttp将会添加一个Cookie头。

       一些请求将会具有响应缓存。 当这个被缓存的响应没有被刷新的时候,OkHttp可以执行一个条件式的GET请求来获得更新的响应,如果此响应比缓存的更新。 这需要在请求头中添加如If-Modified-Since和If-None-Match字段。

重写响应

       如果透明压缩被启用,OkHttp将会丢弃相应的响应头:Content-Encoding和Content-Length,因为它们不适用于被解压缩响应体。

       如果条件式GET请求成功,从网络获得的响应和缓存将会根据规范被直接合并。

后续请求

       当您请求的URL已经被发送时,服务器将返回一个类似于302的响应代码用于指示该文档的新URL。 OkHttp将跟随重定向来获取最终的响应。

       如果响应发出身份验证,OkHttp将会要求认证者(如果已配置)提供验证。如果验证者提供凭证,那么请求将会包含此凭证并被重新发送。

重试请求

       有时候连接会失败:要么是连接池已经过时并断开连接,要么是无法访问Web服务器本身。 OkHttp将会使用不同的路线(如果有)重试该请求。

请求

       通过重写,重定向,后续跟踪和重试,您的一个简单的请求可能会产生许多的请求和响应。 OkHttp使用Call来建立任务模型,并通过许多必要的中间请求和响应来满足您的请求。通常,这些(中间的请求和响应)不会很多。但是,如果您的URL被重定向,或者因为故障而被转移到一个备用的IP地址,您会很欣慰的知道,您的代码会继续工作。

请求以两种方式之一执行:

  • 同步:您的线程将会一直阻塞,直到响应是可读的。
  • 异步:您可以在任何线程上将请求加入队列,并在响应可读时调用另一个线程。

       任何线程中都可以取消请求。 如果请求尚未完成,这将会导致请求失败! 写请求体或读响应体这样的代码在请求被取消时将会导致IOException异常。

调度

       对于同步调用,您可以自己创建线程,并负责管理同时发出的请求数。 同一时间太多的连接会浪费资源; 太少的连接则可能导致延迟。

       对于异步调用,Dispatcher实现了最大同时请求的策略。 您可以为每个Web服务器设置(请求的)最大值(默认值为5),以及总体的数量(默认值为64)。

 

 

0 0
原创粉丝点击