gpt4 book ai didi

http - Golang http 获取空response.Body

转载 作者:IT王子 更新时间:2023-10-29 01:11:14 25 4
gpt4 key购买 nike

我遇到了一个问题,对于某些 url,Golang 中的代码没有检索到预期的内容。我没有发布实际的 url,但它有这种形式,并且是一个指向谷歌驱动器文件下载的链接 https://docs.google.com/uc?id=somelongid&export=download。如果我使用 wget 获取文件,它工作正常。我还有使用 open() 的 ruby​​ 代码,它也能正常工作。出于某种原因,虽然 Golang 返回一个空缓冲区并且没有错误。如果我使用此代码来获取一些“普通”url,如静态网站,它会按预期工作并返回非空 response.Body。下面是我从我的项目中提取的代码,用于简化和缩小问题的范围。下面是输出。

package main

import (
"fmt"
"io/ioutil"
"net/http"
)

func main() {
resp, err := http.Get("myurlishere")
if err != nil {
fmt.Println("Something went wrong")
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Printf("Body: %v\n", body)
fmt.Printf("Error: %v\n", err)
}

输出

$go run main.go
Body: []
Error: <nil>

最佳答案

也许您遇到了 HTTP 响应错误。

http.Get 不会返回错误,例如,如果服务器用 404 - Not Found400 - 错误请求。这是因为它们不是异常行为,它们是来自服务器的有效响应。

您应该检查 resp.StatusCode 并查看它是否在 200 范围内。

您可以在the package documentation中查看不同的状态码。 .

This question提示用go从google drive下载有一些问题,因为他们在url中使用了通配符,也许你可以尝试使用答案中列出的url:https://googledrive.com/host/ID

关于http - Golang http 获取空response.Body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25050087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com