diff --git a/response.go b/response.go index c48c81c..d9f8e7a 100644 --- a/response.go +++ b/response.go @@ -36,8 +36,14 @@ func FromHTTPResponse(resp *http.Response) (*Response, error) { content := "" srcReader := bytes.NewReader(srcbuf) - r, err := gzip.NewReader(srcReader) - if err == nil { + if r, err := gzip.NewReader(srcReader); err == nil { + defer r.Close() + buf, err := ioutil.ReadAll(r) + if err != nil { + panic(err) + } + content = string(buf) + } else if r, err := zlib.NewReader(srcReader); err == nil { defer r.Close() buf, err := ioutil.ReadAll(r) if err != nil { @@ -45,17 +51,7 @@ func FromHTTPResponse(resp *http.Response) (*Response, error) { } content = string(buf) } else { - r, err := zlib.NewReader(srcReader) - if err == nil { - defer r.Close() - buf, err := ioutil.ReadAll(r) - if err != nil { - panic(err) - } - content = string(buf) - } else { - content = string(srcbuf) - } + content = string(srcbuf) } return &Response{DContent: content, GResponse: resp}, nil diff --git a/session.go b/session.go index ebff00f..598680e 100644 --- a/session.go +++ b/session.go @@ -154,6 +154,9 @@ const ( // CDialTimeout 一个Connect过程的Timeout CDialTimeout // 支持time.Duration 和 int(秒为单位) + // CKeepAlives 默认不KeepAlives, 容易被一直KeepAlives 没关闭链接 + CKeepAlives + // CProxy 代理链接 CProxy // http, https, socks5 @@ -173,7 +176,7 @@ const ( // NewSession 创建Session func NewSession() *Session { client := &http.Client{} - transport := &http.Transport{DisableCompression: true} + transport := &http.Transport{DisableCompression: true, DisableKeepAlives: true} client.Transport = transport cjar, err := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) @@ -206,6 +209,8 @@ func (ses *Session) SetConfig(typeConfig TypeConfig, values interface{}) { } case CDialTimeout: // 没时间实现这些小细节 + case CKeepAlives: + ses.transport.DisableKeepAlives = !values.(bool) case CCookiejar: v := values.(bool) if v {