1
我學習去,我有下面的代碼工作正常:我會複製resp.Body嗎?
resp, err := http.Get(url) // get the html
...
doc, err := html.Parse(resp.Body) // parse the html page
現在我想打印出來的HTML第一,然後做解析:
resp, err := http.Get(url)
...
b, err := ioutil.ReadAll(resp.Body) // this line is added, not working now...
doc, err := html.Parse(resp.Body)
我想原因是RESP 。Body是一個讀者,我不能稱之爲讀兩次?任何想法如何正確地做到這一點?複製resp.Body?
謝謝!爲什麼原來的那個不工作?我猜是因爲我讀了兩次?你能否詳細解釋一下? – WhatABeautifulWorld
@WhatABeautifulWorld查看更新後的答案。 –
@WhatABeautifulWorld您通常無法讀取兩次流。這在大多數語言中都是如此。根據實現情況的不同,數據流可能不會保留所有緩存在內存中的數據,而是會在客戶端使用它們時傳輸一小部分數據,一旦數據被客戶端讀取,它們甚至可能會從內存中丟棄數據(因此無法讀兩遍。) –