Servlet的Response.setContentLength無效


在看公司的代碼的時候,有遇到了okhttp里面的 response.body().contentLength()調用,有點疑問:

 1.httpurlconnection里面 HttpConnection.getContentLength()是直接讀的請求頭的信息,所以只要是和服務器連接成功,調用這個方法是不訪問網絡的,那么okhttp呢? okhttp的 contentLength()是讀的請求頭的數據嗎?還是調用的時候阻塞住,然后將服務端數據全部接受后返回收到的長度??

 

 心里有了疑問,第一件事就是去看okhttp的源碼,初略看了一下,貌似沒有解決我的疑問,所以我決定自己試驗一下,試驗的過程就不說了,只是寫了一個簡單的接口,不過在寫接口的時候遇到了另外一個問題, 我在servelet里面設置了setContentLength方法,但是客戶端並沒有這個字段,查了一會才發現我的response.setContentLength()方法寫在了response.getWriter()后面,所以不生效了,嗚嗚~

   好吧,直接給出試驗的結果吧:

       okhttp的response.body().contentLength()方法調用的時候沒有訪問網絡(andriod平台在主線程訪問網絡會報異常),數據是來自響應頭的content_length字段。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM