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)。
- OkHttp Wiki翻译(二)调用
- OkHttp wiki官方文档翻译(二)
- okhttp的Wiki(翻译)
- OkHttp Wiki翻译(一)使用OkHttp
- OkHttp Wiki翻译(三)连接
- OkHttp Wiki翻译(四)使用说明
- OkHttp Wiki翻译(五)拦截器
- OkHttp wiki官方文档翻译(一)
- okHttp(二)官网翻译
- OkHttp Wiki翻译(六)安全超文本传输协议(HTTPS)
- OkHttp Wiki 笔记
- 学习OkHttp wiki--Interceptors
- (翻译)维基模式(Wiki)
- 【未完成】【翻译】FAAC-WiKi
- selenium官方wiki翻译
- ROS wiki教程翻译
- P2Pool 详解wiki翻译
- JUnit4 wiki翻译
- 使用IDEA搭建SpringBoot项目且整合mongoDB和mysql
- 搭建Apache Httpd服务RHCE-Day9
- Zedboard---实验三阻塞非阻塞
- 极光推送的设备唯一性标识 RegistrationID
- Servlet_11th_Session的读写与作用域
- OkHttp Wiki翻译(二)调用
- 栅格系统的Gutter vs Offset vs Pull vs Push
- C语言的数据存储
- POJ 2409-Let it Bead(Polya定理-旋转+翻转 串项链)
- Java Rest WebService 三步服务发布
- 5060. 公路建设
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- Centos7安装后重启出现Initial setup of CentOS Linux 7 (core)
- PAT 1001. A+B Format (20)