猿问

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

我使用 Client.Get(url) 函数访问网页。


timeout := time.Duration(wgetTimeout) * time.Second

client := 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() 函数。



紫衣仙女
浏览 164回答 2
2回答

拉丁的传说

GoDoc:输入 *url.Errorif e, ok := err.(*url.Error); ok && e.Timeout() {    log.Fatal("timeout is: ", e.Timeout())} else if err != nil {    panic(err)}

qq_遁去的一_1

使用os.IsTimeout来确定错误是否有返回 true 的 Timeout() 方法。res, err := client.Get(url)if os.IsTimeout(err) {    // handle timeout} else if err != nil {    return "", err}
随时随地看视频慕课网APP

相关分类

Go
我要回答