github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgNet/kmgHttp/client.go (about) 1 package kmgHttp 2 3 import ( 4 "crypto/tls" 5 "net/http" 6 "net/url" 7 "sync" 8 "time" 9 ) 10 11 func NewHttpsCertNotCheckClient() *http.Client { 12 return &http.Client{ 13 Transport: &http.Transport{ 14 TLSClientConfig: &tls.Config{ 15 InsecureSkipVerify: true, 16 }, 17 }, 18 } 19 } 20 21 var httpsNotCheckClient *http.Client 22 var httpsNotCheckClientOnce sync.Once 23 24 func GetHttpsCertNotCheckClient() *http.Client { 25 httpsNotCheckClientOnce.Do(func() { 26 httpsNotCheckClient = &http.Client{ 27 Transport: &http.Transport{ 28 TLSClientConfig: &tls.Config{ 29 InsecureSkipVerify: true, 30 }, 31 }, 32 } 33 }) 34 return httpsNotCheckClient 35 } 36 37 //一个不验证证书,并且使用http代理的http客户端 38 // httpProxy look like http://127.0.0.1:9876 39 func MustNewTestClientWithHttpProxy(httpProxy string) *http.Client { 40 var Proxy func(*http.Request) (*url.URL, error) 41 if httpProxy != "" { 42 u, err := url.Parse(httpProxy) 43 if err != nil { 44 panic(err) 45 } 46 Proxy = http.ProxyURL(u) 47 } 48 return &http.Client{ 49 Transport: &http.Transport{ 50 TLSClientConfig: &tls.Config{ 51 InsecureSkipVerify: true, 52 }, 53 Proxy: Proxy, 54 }, 55 } 56 } 57 58 func NewTimeoutHttpClient(dur time.Duration) *http.Client { 59 return &http.Client{ 60 Timeout: dur, 61 } 62 } 63 64 func NewTimeoutNoKeepAliveHttpClient(dur time.Duration) *http.Client { 65 return &http.Client{ 66 Transport: &http.Transport{ 67 DisableKeepAlives: true, 68 }, 69 Timeout: dur, 70 } 71 }