发布时间:2024-12-22 22:28:48
以下是一个示例代码,演示如何设置HTTP请求的超时时间:
import (
"fmt"
"net/http"
"time"
)
func main() {
client := http.Client{
Timeout: 10 * time.Second,
}
resp, err := client.Get("https://api.example.com")
if err != nil {
fmt.Println("HTTP请求出错:", err)
return
}
defer resp.Body.Close()
// 处理响应
// ...
}
在上面的示例代码中,我们创建了一个http.Client对象,并设置了Timeout属性为10秒。这意味着如果在10秒内没有收到响应,那么请求将被取消,并返回一个超时错误。
以下是一个示例代码,演示如何为每个请求设置不同的超时时间:
import (
"fmt"
"net/http"
"time"
)
func main() {
transport := http.Transport{
Dial: (&net.Dialer{
Timeout: 5 * time.Second,
}).Dial,
TLSHandshakeTimeout: 5 * time.Second,
ResponseHeaderTimeout: 10 * time.Second,
}
client := http.Client{
Transport: &transport,
}
resp, err := client.Get("https://api.example.com")
if err != nil {
fmt.Println("HTTP请求出错:", err)
return
}
defer resp.Body.Close()
// 处理响应
// ...
}
在上面的示例代码中,我们创建了一个http.Transport对象,并为其设置了Dial和TLSHandshakeTimeout属性。Dial属性用于设置与服务器建立连接的超时时间,而TLSHandshakeTimeout属性用于设置TLS握手的超时时间。
此外,我们还可以使用ResponseHeaderTimeout属性设置接收到第一个字节和读取完整header之间的超时时间。