記錄本人對網絡請求和接收的一些疑問

疑問始於對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能成功抓到整個文件的二進制,不知道這種情況下底層爲什麼還是下完了整個文件,然後抓包軟件抓到了文件。

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