【问题标题】:What are possible golang http response errors?什么是可能的 golang http 响应错误?
【发布时间】:2016-11-29 03:09:22
【问题描述】:

和很多 golang net/http 的文章一样,一个请求会返回两个值:response 和 error:

resp, err := http.Get("http://example.com/")
if err != nil {
    // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)

对于 http 相关的错误,它会在resp 中返回,状态码如 502、400 等。可能返回的错误是什么?我需要先了解它们,然后才能处理它们。

【问题讨论】:

  • @Marty 我不是说状态码错误,因为它们是在resp返回的,我想知道在上面代码的第一行返回为err
  • 我正在寻找同样的问题,但得到了一个有 5 票反对并关闭的问题。感谢@cizixs 提出这个问题。

标签: http go


【解决方案1】:
  1. 网址解析错误
  2. 重定向时间过多
  3. tcp 连接\写入\读取超时
  4. 302 状态,但位置标头为空

等等

您可以阅读http包中的源代码。然后就可以找到这个函数http.Get返回的所有错误了。

【讨论】:

  • 感谢您的回答,这对我很有帮助。
【解决方案2】:

这些错误主要是与网络相关的错误,例如网络超时等。没有必要以不同的方式处理它们。你可以优雅地退出,例如,

resp, err := http.Get("http://google.com/")
    if err != nil {
        fmt.Println(err.Error())
        os.Exit(1)
}

【讨论】:

    【解决方案3】:

    有很多错误响应,例如:-

    301 (Moved Permanently)
    302 (Found)
    303 (See Other)
    307 (Temporary Redirect) 
    

    你最好去阅读http.Get

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2012-12-24
      相关资源
      最近更新 更多