我正在使用 golang 向服务器发出 http post 请求。假设服务器当前已关闭(意味着运行服务器的机器已关闭),则请求将停留在IP层。所以我的程序执行无法进一步进行。无法进入应用层。那么 golang 有没有办法阻止这种情况。 我正在使用以下代码。
req, err := http.NewRequest("POST", url, bytes.NewReader(b))
if err != nil {
return errors.Wrap(err, "new request error")
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
return errors.Wrap(err, "http request error")
}
defer resp.Body.Close()
是否可以添加任何内容,以便在没有从 IP 层找到任何内容时终止请求。
最佳答案
默认的http Client没有超时。您可以自己创建一个显式的 http.Client 并设置超时:
var cl = &http.Client{
Timeout: time.Second * 10,
}
resp, err := cl.Do(req)
if err != nil {
// err will be set on timeout
return errors.Wrap(err, "http request error")
}
defer resp.Body.Close()
如果服务器在请求过程中不再应答,您可以处理超时。
关于http - 使用golang终止来自IP层的http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50694559/