diff --git a/webservice.go b/webservice.go
index 067b172..ec8ff4c 100644
--- a/webservice.go
+++ b/webservice.go
@@ -4,6 +4,7 @@
 	"bytes"
 	"crypto/hmac"
 	"crypto/sha1"
+	"crypto/tls"
 	"encoding/hex"
 	"encoding/json"
 	"errors"
@@ -14,6 +15,7 @@
 	"net/http"
 	"net/url"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -86,9 +88,7 @@
 }
 
 func (w *WebSession) DoGet(uri string, params map[string]string) (*http.Response, error) {
-	transport := http.Transport{Dial: dailTimeout}
-
-	client := http.Client{Transport: &transport}
+	client := w.NewClient(3)
 
 	full_url := w.BaseUrl + uri
 
@@ -121,18 +121,23 @@
 }
 
 func (w *WebSession) NewClient(timeout int) *http.Client {
-	transport := http.Transport{Dial: func(network, addr string) (net.Conn, error) {
-		default_timeout := time.Duration(timeout) * time.Second
-		return net.DialTimeout(network, addr, default_timeout)
-	}}
-
+	var transport http.Transport
+	if strings.HasPrefix(w.BaseUrl, "https://") {
+		transport = http.Transport{TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+			TLSHandshakeTimeout: time.Duration(timeout) * time.Second}
+	} else if strings.HasPrefix(w.BaseUrl, "http://") {
+		transport = http.Transport{Dial: func(network, addr string) (net.Conn, error) {
+			default_timeout := time.Duration(timeout) * time.Second
+			return net.DialTimeout(network, addr, default_timeout)
+		}}
+	}
 	return &http.Client{Transport: &transport}
 }
+
 func (w *WebSession) DoPost(uri string, param map[string]string) (*http.Response, error) {
-	transport := http.Transport{Dial: dailTimeout}
-	client := &http.Client{Transport: &transport}
+	client := w.NewClient(3)
 	param["app_id"] = w.AppId
-	//	param["term_id"] = w.TermId
+	param["term_id"] = w.TermId
 	param["sign_method"] = "HMAC"
 	param["session_key"] = w.session_key
 	ts := w.GetTimestamp()
@@ -140,7 +145,6 @@
 	param["sign"] = w.Sign(w.AppId + w.TermId + w.session_key + ts)
 
 	full_url := w.BaseUrl + uri
-	//	log.Debugf("Url=%v", full_url)
 	data, err := json.Marshal(param)
 	if err != nil {
 		return nil, err
@@ -188,9 +192,11 @@
 	params["term_id"] = w.TermId
 	r, err := w.DoGet(uri, params)
 
-	if err != nil || r.StatusCode != 200 {
-		fmt.Println("here")
+	if err != nil {
 		//		log.Errorf("Status = %v, err = %v\n", r.StatusCode, err)
+		return "", err
+	}
+	if r.StatusCode != 200 {
 		return "", errors.New("请求失败")
 	}
 
