go request包发送请求后,返回编码出现乱码?

发布于 2022-09-01 23:53:05 字数 905 浏览 12 评论 0

// test
package main

import (
    "io/ioutil"
    "net/http"
    "os"

    "github.com/mozillazg/request"
)

func main() {
    c := &http.Client{}
    req := request.NewRequest(c)
    resp, _ := req.Get("http://segmentfault.com/")
    defer resp.Body.Close() // **Don't forget close the response body**
    body, _ := ioutil.ReadAll(resp.Body)
    fr, _ := os.Create("request.html")
    fr.Write(body)
    res, _ := http.Get("http://segmentfault.com/")
    truebody, _ := ioutil.ReadAll(res.Body)
    res.Body.Close()
    ft, _ := os.Create("get.html")
    ft.Write(truebody)

}

request包请求结果
request包请求结果

http.get请求输出结果
http.get请求输出结果

出现乱码 而这返回的不都是response 对象吗 怎么一个乱码 一个正常,,求解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我只土不豪 2022-09-08 23:53:05

github.com/mozillazg/request 这个库默认在 request 的Header 中加入了

Content-Encoding:[gzip]

所以返回的body不是text/html,而是一个压缩过的二进制。所以request.html 中是乱码。
代码中加入这么一段:

c := &http.Client{}
req := request.NewRequest(c)
// 追加的代码 开始=====================
req.Headers = map[string]string{
        "Accept-Encoding": "",
}
// 追加的代码 结束=====================
resp, _ := req.Get("http://segmentfault.com/")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文