3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個贊
Go 有一個帶有響應(yīng)轉(zhuǎn)儲的 httputil 包。 https://golang.org/pkg/net/http/httputil/#DumpResponse。響應(yīng)轉(zhuǎn)儲的第二個參數(shù)是是否包含正文的布爾值。因此,如果您只想將標(biāo)題保存到文件中,請將其設(shè)置為 false。
將響應(yīng)轉(zhuǎn)儲到文件的示例函數(shù)可能是:
import (
"io/ioutil"
"net/http"
"net/http/httputil"
)
func dumpResponse(resp *http.Response, filename string) error {
dump, err := httputil.DumpResponse(resp, true)
if err != nil {
return err
}
return ioutil.WriteFile(filename, dump, 0644)
}

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊
編輯:感謝@JimB指向http.Response.Write方法,這使得這比我在開始時提出的要容易得多:
resp, err := http.Get("http://google.com/")
if err != nil{
log.Panic(err)
}
f, err := os.Create("output.txt")
defer f.Close()
resp.Write(f)
這是我的第一個答案
你可以這樣做:
resp, err := http.Get("http://google.com/")
body, err := ioutil.ReadAll(resp.Body)
// write whole the body
err = ioutil.WriteFile("body.txt", body, 0644)
if err != nil {
panic(err)
}
這是對我的第一個答案的編輯:
感謝添加標(biāo)題部分的@Hector Correa。這是一個更全面的片段,針對您的整個問題。這將標(biāo)題后跟請求正文寫入 output.txt
//get the response
resp, err := http.Get("http://google.com/")
//body
body, err := ioutil.ReadAll(resp.Body)
//header
var header string
for h, v := range resp.Header {
for _, v := range v {
header += fmt.Sprintf("%s %s \n", h, v)
}
}
//append all to one slice
var write []byte
write = append(write, []byte(header)...)
write = append(write, body...)
//write it to a file
err = ioutil.WriteFile("output.txt", write, 0644)
if err != nil {
panic(err)
}

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊
您還可以從響應(yīng)中獲取標(biāo)題,如下所示:
for header, values := range resp.Header {
for _, value := range values {
log.Printf("\t\t %s %s", header, value)
}
}
- 3 回答
- 0 關(guān)注
- 194 瀏覽
添加回答
舉報