亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Go中讀取gzip壓縮的HTTP響應

在Go中讀取gzip壓縮的HTTP響應

Go
手掌心 2021-05-07 18:50:07
我正在嘗試使用Go閱讀gzip壓縮的HTTP響應!但我總是收到以下錯誤消息:panic: gzip: invalid header[...] stack trace [...]如果我運行“ curl -H” Accept-Encoding:gzip“ http://foo.com/ | gunzip-”,我得到的響應將正確壓縮。我也用ngrep仔細檢查過,正確發送/返回了對Accept-Encoding / Content-Encoding。如果我創建了一個包含一些虛擬內容的文件并將其gzip壓縮,則可以從Go中讀取它!程序。我用于測試的程序:package mainimport (    "io"    //"os"    "fmt"    "compress/gzip"    "net/http")func main() {    /* This works fine    f, _ := os.Open("/tmp/test.gz")    defer f.Close()    reader, err := gzip.NewReader(f)    */    // This does not :/    resp, _ := http.Get("http://foo.com/")    defer resp.Body.Close()    reader, err := gzip.NewReader(resp.Body)    if err != nil { panic(err) }    buff := make([]byte, 1024)    for {        n, err := reader.Read(buff)        if err != nil && err != io.EOF {            panic(err)        }        if n == 0 {            break        }    }    s := fmt.Sprintf("%s", buff)    fmt.Println(s)}我忽略了什么嗎?
查看完整描述

3 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

net/http#Transport處理gzip壓縮的響應。您不必做任何特別的事情。

看看這里DisableCompression選項。


查看完整回答
反對 回復 2021-05-17
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

根據net / http docs(第110行)的說明,如果您手動設置Accept-Encoding請求標頭,則gzip壓縮的響應將不會被http.Transport自動解壓縮。否則,行為由Transport的DisableCompression布爾值控制

查看完整回答
反對 回復 2021-05-17
  • 3 回答
  • 0 關注
  • 650 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號