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  }