记录本人对网络请求和接收的一些疑问

疑问始于对okhttp文件上传和文件下载的进度的实现时产生。为什么okhttp能够驾驭上传大文件呢?文件上传过程中如何掌控文件的上传进度呢?okhttp发送请求时request时如何封装的呢?okhttp接收response的的底层时如何接收的呢?带着这些疑问,本人特意去翻看okhttp的代码实现。本文特此记录看代码过程中得到的一些答案。

request发送请求的过程细节

过程一:先发送header,flush(每写一段数据flush一次,直到写完数据);然后发送requestBody。之后读取header,再读取responseBody。
过程二:读取response时,先读取一部分流数据解析为header,从header中获取responseBody的Transfer-Encoding,若Transfer-Encoding是chunker数据,则返回原始输入流给client,client拿到原始的输入流自己操作。

http下载文件,在代码层对打开的输入流不做读取操作,底层会下载完整个文件吗

再client端对打开的输入流不多读取操作。用fiddler抓包试了,fiddler能成功抓到整个文件的二进制,不知道这种情况下底层为什么还是下完了整个文件,然后抓包软件抓到了文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值