我試圖使用resp, err := http.Get(url)
命令將響應寫入文件以及使用相同的響應來提取鏈接。如何在Golang中製作http.Get(url)請求的響應的副本
在我使用resp.Write(f)
將內容寫入文件之後,我不能使用resp.Body
作爲其他目的(對於來自上述url的響應)而不發出另一個http.Get
請求。我試過resp2 := bytes.NewBuffer(resp)
。它提供了類型不匹配的錯誤。我也嘗試過複製。
我試圖使用resp, err := http.Get(url)
命令將響應寫入文件以及使用相同的響應來提取鏈接。如何在Golang中製作http.Get(url)請求的響應的副本
在我使用resp.Write(f)
將內容寫入文件之後,我不能使用resp.Body
作爲其他目的(對於來自上述url的響應)而不發出另一個http.Get
請求。我試過resp2 := bytes.NewBuffer(resp)
。它提供了類型不匹配的錯誤。我也嘗試過複製。
假設響應放進內存裏,只需要創建一個緩衝區,並使用resp.Write,像(未經測試,基本上是正確的):
var b bytes.Buffer
if err := resp.Write(b); err != nil {
// handle error
} else {
// Do something with buffer
}
代碼與任何讀者,使用的作品:ioutil.ReadAll,它返回一個新的[]字節包含數據,然後您可以包裝在一個字節中。緩衝區
httputil有一個響應轉儲。 https://golang.org/pkg/net/http/httputil/#DumpRequest 它將使用內存副本替換主體,以便您可以重新使用它。
你能分享代碼嗎? –
一旦你已經排空它,你就無法讀取響應主體。您是否嘗試過在緩存的響應中使用[ReadResponse](https://golang.org/pkg/net/http/#ReadResponse)? – JimB
[code here](https://play.golang.org/p/Aj8KKfQGfD)在'resp.write(f)'產生帶有標題信息且沒有主體的新文件。順便說一句,感謝@JimB在先前的問題。你能否提供ReadResponse示例。 –