go net/http何时返回err(post请求)

问题描述 投票:0回答:1

我面临一个非常棘手的问题,我无法找到正确的答案。

让我们使用下面的示例代码作为参考。当我从服务器收到 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))
}

尝试解决我的项目中的错误。

go http net-http
1个回答
0
投票

https://pkg.go.dev/net/http#Client.Do

如果由客户端策略(例如 CheckRedirect)或无法使用 HTTP(例如网络连接问题)引起,则会返回错误。 非 2xx 状态代码不会导致错误。

© www.soinside.com 2019 - 2024. All rights reserved.