登录
首页 >  Golang >  Go问答

从 net/http 包中的 *urlError 调用 Timeout() 函数

来源:stackoverflow

时间:2024-02-17 14:36:25 179浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《从 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() 函数。


解决方案


GoDoc: Type *url.Error

if e, ok := err.(*url.error); ok && e.timeout() {
    log.fatal("timeout is: ", e.timeout())
} else if err != nil {
    panic(err)
}

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

res, err := client.Get(url)
if os.IsTimeout(err) {
    // handle timeout
} else if err != nil {
    return "", err
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>