为了账号安全,请及时绑定邮箱和手机立即绑定

从 net/http 包中的 *urlError 访问 Timeout() 方法

从 net/http 包中的 *urlError 访问 Timeout() 方法

Go
紫衣仙女 2022-06-13 15:09:47
我使用 Client.Get(url) 函数访问网页。timeout := time.Duration(wgetTimeout) * time.Secondclient := http.Client{Timeout: timeout}// Get page and check for error (timeout, http ...)res, err := client.Get(url)if err != nil {    return "", err}defer res.Body.Close()Client.Get () 函数文档说:任何返回的错误都是 *url.Error 类型。如果请求超时,url.Error 值的 Timeout 方法将报告 true。如何访问 url.Error 方法,如 bool Timeout() ?此处发布的解决方案需要使用 Client.Do() 函数。
查看完整描述

2 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

GoDoc:输入 *url.Error


if e, ok := err.(*url.Error); ok && e.Timeout() {

    log.Fatal("timeout is: ", e.Timeout())

} else if err != nil {

    panic(err)

}


查看完整回答
反对 回复 2022-06-13
?
qq_遁去的一_1

TA贡献1725条经验 获得超8个赞

使用os.IsTimeout来确定错误是否有返回 true 的 Timeout() 方法。


res, err := client.Get(url)

if os.IsTimeout(err) {

    // handle timeout

} else if err != nil {

    return "", err

}


查看完整回答
反对 回复 2022-06-13
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号