我面临一个非常棘手的问题,我无法找到正确的答案。
让我们使用下面的示例代码作为参考。当我从服务器收到 400 或 401 http 错误时,“err”不会是 nil 值吗?哪些 http 状态代码会导致返回错误(非零值)? 2xx、4xx、5xx?我在哪里可以找到这方面的文档?
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
// The URL for the Google Books API, searching for "Pride and Prejudice"
url := "https://httpbin.org/status/401"
// Create a new HTTP client with default settings
client := &http.Client{}
// Create a new HTTP request
req, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
// Send the request and receive the response
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making API call:", err)
return
}
defer resp.Body.Close() // Ensure the response body is closed after reading
// Read the response body
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
// Print the response body as a string
fmt.Println("Response:", string(body))
}
尝试解决我的项目中的错误。
https://pkg.go.dev/net/http#Client.Do
如果由客户端策略(例如 CheckRedirect)或无法使用 HTTP(例如网络连接问题)引起,则会返回错误。 非 2xx 状态代码不会导致错误。