Skip to content

Commit 44e14f7

Browse files
committed
Added httpHeader support for http client
1 parent 1b4682c commit 44e14f7

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

Diff for: rpc/fasthttp/fasthttp_client.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* *
1313
* hprose fasthttp client for Go. *
1414
* *
15-
* LastModified: Nov 1, 2016 *
15+
* LastModified: Dec 1, 2016 *
1616
* Author: Ma Bingyao <[email protected]> *
1717
* *
1818
\**********************************************************/
@@ -21,6 +21,7 @@ package fasthttp
2121

2222
import (
2323
"crypto/tls"
24+
"net/http"
2425
"net/url"
2526
"strings"
2627
"sync"
@@ -167,6 +168,14 @@ func (client *FastHTTPClient) sendAndReceive(
167168
client.limiter.L.Unlock()
168169
req := fasthttp.AcquireRequest()
169170
client.Header.CopyTo(&req.Header)
171+
header, ok := context.Get("httpHeader").(http.Header)
172+
if ok && header != nil {
173+
for key, values := range header {
174+
for _, value := range values {
175+
req.Header.Add(key, value)
176+
}
177+
}
178+
}
170179
req.Header.SetMethod("POST")
171180
client.loadCookie(req, client.URL())
172181
req.SetRequestURI(client.URI())
@@ -189,6 +198,13 @@ func (client *FastHTTPClient) sendAndReceive(
189198
data = resp.Body()
190199
client.saveCookie(resp)
191200
}
201+
header = make(http.Header)
202+
resp.Header.VisitAll(func(key, value []byte) {
203+
k := util.ByteString(key)
204+
v := util.ByteString(value)
205+
header.Add(k, v)
206+
})
207+
context.Set("httpHeader", header)
192208
fasthttp.ReleaseRequest(req)
193209
fasthttp.ReleaseResponse(resp)
194210
client.limiter.L.Lock()

Diff for: rpc/http_client.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* *
1313
* hprose http client for Go. *
1414
* *
15-
* LastModified: Nov 20, 2016 *
15+
* LastModified: Dec 1, 2016 *
1616
* Author: Ma Bingyao <[email protected]> *
1717
* *
1818
\**********************************************************/
@@ -141,10 +141,19 @@ func (client *HTTPClient) sendAndReceive(
141141
req.Header.Add(key, value)
142142
}
143143
}
144+
header, ok := context.Get("httpHeader").(http.Header)
145+
if ok && header != nil {
146+
for key, values := range header {
147+
for _, value := range values {
148+
req.Header.Add(key, value)
149+
}
150+
}
151+
}
144152
req.ContentLength = int64(len(data))
145153
req.Header.Set("Content-Type", "application/hprose")
146154
client.httpClient.Timeout = context.Timeout
147155
resp, err := client.httpClient.Do(req)
156+
context.Set("httpHeader", resp.Header)
148157
if err != nil {
149158
return nil, err
150159
}

0 commit comments

Comments
 (0)