From 862ea226e5c8b2099c9d3a4e7ed5df90ceae5a56 Mon Sep 17 00:00:00 2001 From: Shuai Date: Mon, 24 Aug 2015 00:16:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E7=BD=AE=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httplib/httplib.go | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/httplib/httplib.go b/httplib/httplib.go index 1b7b207d..b10b770a 100644 --- a/httplib/httplib.go +++ b/httplib/httplib.go @@ -100,8 +100,8 @@ func NewBeegoRequest(rawurl, method string) *BeegoHttpRequest { return &BeegoHttpRequest{ url: rawurl, req: &req, - params: map[string]interface{}{}, - files: map[string]string{}, + params: map[string][]string{}, + files: map[string]string{}, setting: defaultSetting, resp: &resp, } @@ -150,7 +150,7 @@ type BeegoHttpSettings struct { type BeegoHttpRequest struct { url string req *http.Request - params map[string]interface{} + params map[string][]string files map[string]string setting BeegoHttpSettings resp *http.Response @@ -272,8 +272,12 @@ func (b *BeegoHttpRequest) SetProxy(proxy func(*http.Request) (*url.URL, error)) // Param adds query param in to request. // params build query string as ?key1=value1&key2=value2... -func (b *BeegoHttpRequest) Param(key string, value interface{}) *BeegoHttpRequest { - b.params[key] = value +func (b *BeegoHttpRequest) Param(key, value string) *BeegoHttpRequest { + if param, ok := b.params[key]; ok { + b.params[key] = append(param, value) + } else { + b.params[key] = []string{value} + } return b } @@ -348,14 +352,9 @@ func (b *BeegoHttpRequest) buildUrl(paramBody string) { } } for k, v := range b.params { - switch v.(type) { - case string: - bodyWriter.WriteField(k, v.(string)) - case []string: - for _, vv := range v.([]string) { - bodyWriter.WriteField(k, vv) - } - } + for _, vv := range v { + bodyWriter.WriteField(k, vv) + } } bodyWriter.Close() pw.Close() @@ -390,20 +389,12 @@ func (b *BeegoHttpRequest) SendOut() (*http.Response, error) { if len(b.params) > 0 { var buf bytes.Buffer for k, v := range b.params { - switch v.(type) { - case string: - buf.WriteString(url.QueryEscape(k)) - buf.WriteByte('=') - buf.WriteString(url.QueryEscape(v.(string))) - buf.WriteByte('&') - case []string: - for _, vv := range v.([]string) { - buf.WriteString(url.QueryEscape(k)) - buf.WriteByte('=') - buf.WriteString(url.QueryEscape(vv)) - buf.WriteByte('&') - } - } + for _, vv := range v { + buf.WriteString(url.QueryEscape(k)) + buf.WriteByte('=') + buf.WriteString(url.QueryEscape(vv)) + buf.WriteByte('&') + } } paramBody = buf.String() paramBody = paramBody[0 : len(paramBody)-1]