浏览代码

add transport

wenzuochao 5 年之前
父节点
当前提交
61417f5aff
共有 2 个文件被更改,包括 20 次插入13 次删除
  1. 10 4
      sdk/client.go
  2. 10 9
      sdk/config.go

+ 10 - 4
sdk/client.go

@@ -143,7 +143,9 @@ func (client *Client) InitWithOptions(regionId string, config *Config, credentia
 	client.config = config
 	client.config = config
 	client.httpClient = &http.Client{}
 	client.httpClient = &http.Client{}
 
 
-	if config.HttpTransport != nil {
+	if config.Transport != nil {
+		client.httpClient.Transport = config.Transport
+	} else if config.HttpTransport != nil {
 		client.httpClient.Transport = config.HttpTransport
 		client.httpClient.Transport = config.HttpTransport
 	}
 	}
 
 
@@ -486,7 +488,7 @@ func (client *Client) setTimeout(request requests.AcsRequest) {
 	if trans, ok := client.httpClient.Transport.(*http.Transport); ok && trans != nil {
 	if trans, ok := client.httpClient.Transport.(*http.Transport); ok && trans != nil {
 		trans.DialContext = Timeout(connectTimeout)
 		trans.DialContext = Timeout(connectTimeout)
 		client.httpClient.Transport = trans
 		client.httpClient.Transport = trans
-	} else {
+	} else if client.httpClient.Transport == nil {
 		client.httpClient.Transport = &http.Transport{
 		client.httpClient.Transport = &http.Transport{
 			DialContext: Timeout(connectTimeout),
 			DialContext: Timeout(connectTimeout),
 		}
 		}
@@ -533,8 +535,12 @@ func (client *Client) DoActionWithSigner(request requests.AcsRequest, response r
 	// Set whether to ignore certificate validation.
 	// Set whether to ignore certificate validation.
 	// Default InsecureSkipVerify is false.
 	// Default InsecureSkipVerify is false.
 	if trans, ok := client.httpClient.Transport.(*http.Transport); ok && trans != nil {
 	if trans, ok := client.httpClient.Transport.(*http.Transport); ok && trans != nil {
-		trans.TLSClientConfig = &tls.Config{
-			InsecureSkipVerify: client.getHTTPSInsecure(request),
+		if trans.TLSClientConfig != nil {
+			trans.TLSClientConfig.InsecureSkipVerify = client.getHTTPSInsecure(request)
+		} else {
+			trans.TLSClientConfig = &tls.Config{
+				InsecureSkipVerify: client.getHTTPSInsecure(request),
+			}
 		}
 		}
 		if proxy != nil && !flag {
 		if proxy != nil && !flag {
 			trans.Proxy = http.ProxyURL(proxy)
 			trans.Proxy = http.ProxyURL(proxy)

+ 10 - 9
sdk/config.go

@@ -22,15 +22,16 @@ import (
 )
 )
 
 
 type Config struct {
 type Config struct {
-	AutoRetry         bool            `default:"true"`
-	MaxRetryTime      int             `default:"3"`
-	UserAgent         string          `default:""`
-	Debug             bool            `default:"false"`
-	HttpTransport     *http.Transport `default:""`
-	EnableAsync       bool            `default:"false"`
-	MaxTaskQueueSize  int             `default:"1000"`
-	GoRoutinePoolSize int             `default:"5"`
-	Scheme            string          `default:"HTTP"`
+	AutoRetry         bool              `default:"true"`
+	MaxRetryTime      int               `default:"3"`
+	UserAgent         string            `default:""`
+	Debug             bool              `default:"false"`
+	HttpTransport     *http.Transport   `default:""`
+	Transport         http.RoundTripper `default:""`
+	EnableAsync       bool              `default:"false"`
+	MaxTaskQueueSize  int               `default:"1000"`
+	GoRoutinePoolSize int               `default:"5"`
+	Scheme            string            `default:"HTTP"`
 	Timeout           time.Duration
 	Timeout           time.Duration
 }
 }