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

疑问始于对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能成功抓到整个文件的二进制,不知道这种情况下底层为什么还是下完了整个文件,然后抓包软件抓到了文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章