我遇到了一个问题,对于某些网址,Golang中的代码没有检索到预期的内容。我没有发布实际网址,但它有此表格,并且是指向谷歌驱动器文件下载https://docs.google.com/uc?id=somelongid&export=download
的链接。如果我使用wget来获取文件,它可以正常工作。我也有使用open()
的ruby代码,它也可以。出于某种原因,尽管Golang返回一个空缓冲区并且没有错误。如果我使用此代码来获取一些"普通" url像一个静态网站,它按预期工作,并返回非空响应.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>
答案 0 :(得分:2)
也许您收到了HTTP响应错误。
例如,如果服务器以http.Get
或404 - Not Found
回答,则 400 - Bad Request
将不会返回错误。这是因为它们不是特殊行为,它们是来自服务器的有效响应。
您应该检查resp.StatusCode
并查看它是200范围内的一个。
您可以在the package documentation中查看不同的状态代码。
This question表示使用go从谷歌驱动器下载有一些问题,因为他们在网址中使用通配符,也许您可以尝试使用答案中列出的网址:https://googledrive.com/host/ID