Skip to content

Commit 02592c7

Browse files
committed
支持解析返回压缩http请求
1 parent 4024795 commit 02592c7

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

http/client/client.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package client
22

33
import (
44
"bytes"
5+
"compress/gzip"
56
"encoding/json"
67
"fmt"
78
"io/ioutil"
@@ -109,7 +110,22 @@ func (c HTTPClient) do(method, url string, headers map[string]string, body []byt
109110
}
110111
defer resp.Body.Close()
111112

112-
data, err := ioutil.ReadAll(resp.Body)
113+
c.logger.Errorf("url:%v, response header:%#v", url, resp.Header)
114+
115+
var data []byte
116+
117+
switch resp.Header.Get("Content-Encoding") {
118+
case "gzip":
119+
gr, err := gzip.NewReader(resp.Body)
120+
if err != nil {
121+
return nil, errors.Trace(err)
122+
}
123+
data, err = ioutil.ReadAll(gr)
124+
gr.Close()
125+
default:
126+
data, err = ioutil.ReadAll(resp.Body)
127+
}
128+
113129
if err != nil {
114130
return nil, errors.Trace(err)
115131
}

http/client/client_test.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
package client
22

33
import (
4+
"github.com/dearcode/crab/log"
45
"testing"
56
)
67

8+
func TestHTTPClientZIP(t *testing.T) {
9+
hc := New().SetLogger(log.GetLogger()).Timeout(1)
10+
buf, err := hc.Get("http://www.baidu.com/", map[string]string{"Accept-Encoding": "gzip"}, nil)
11+
if err != nil {
12+
t.Fatalf("err:%v", err)
13+
}
14+
15+
t.Logf("buf:%s", buf)
16+
}
17+
718
func TestHTTPClient(t *testing.T) {
8-
hc := New().Timeout(1)
9-
buf, err := hc.Get("http://baidu.com/", nil, nil)
19+
hc := New().SetLogger(log.GetLogger()).Timeout(1)
20+
buf, err := hc.Get("http://www.baidu.com/", nil, nil)
1021
if err != nil {
1122
t.Fatalf("err:%v", err)
1223
}

log/writer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ func (l *Logger) rotate(now time.Time) {
129129
}
130130

131131
func (l *Logger) write(t Level, format string, argv ...interface{}) {
132+
if l == nil {
133+
return
134+
}
132135
if t > l.level {
133136
return
134137
}

0 commit comments

Comments
 (0)