在Go 对HTTP POST的支持中,简单介绍了客户端的定义。其中结构体Client
有一个字段Transport
,它用来定义单个HTTP
请求的机制,如果为nil
,则使用默认的DefaultTransport
。下面是Transport
的默认实现,由DefaultClient
使用。它根据需要来建立网络连接,然后将其缓存,供后续调用重用。它可以使用HTTP
代理,例如根据$HTTP_PROXY
和$NO_PROXY
环境变量指定。
var DefaultTransport RoundTripper = &Transport{
Proxy: ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}
默认的Transport
指定了六个字段,各个字段的意思接下来将会解说。单从这几个字段的字面大致可以看出,设置的多是超时的时间。而这些值默认情况下都比较大,所以有必要自己重新定义一个Tran