From 099aa53a4cb0d89977bdc8823591e002f4ea2461 Mon Sep 17 00:00:00 2001 From: jjxu <428192774@qq.com> Date: Thu, 27 Jul 2023 13:33:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dquery=20param=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=94=BE=E5=9C=A8url=E7=9A=84=E9=97=AE=E5=8F=B7?= =?UTF-8?q?=E5=90=8E=E9=9D=A2=E6=97=B6=EF=BC=8C=E4=BC=9A=E8=A2=AB=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simpleRequest.go | 48 +++++++++++++++--------------------------------- 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/simpleRequest.go b/simpleRequest.go index 2732eed..9fb9742 100644 --- a/simpleRequest.go +++ b/simpleRequest.go @@ -163,43 +163,12 @@ func (s *SimpleRequest) do(request *http.Request) (body []byte, err error) { // POST method does POST HTTP request. It's defined in section 2 of RFC5789. func (s *SimpleRequest) POST(urls string) (body []byte, err error) { - s.initBody() - r, err := http.NewRequest(http.MethodPost, urls, s.body) - if err != nil { - return nil, err - } - //headers - for k := range s.headers { - r.Header[k] = append(r.Header[k], s.headers[k]...) - s.headers.Del(k) - } - - //queryParams - r.URL.RawQuery = s.queryParams.Encode() - - body, err = s.do(r) - - return + return s.LaunchTo(urls, http.MethodPost) } // GET method does GET HTTP request. It's defined in section 2 of RFC5789. func (s *SimpleRequest) GET(urls string) (body []byte, err error) { - // body - s.initBody() - r, err := http.NewRequest(http.MethodGet, urls, s.body) - if err != nil { - return nil, err - } - //headers - for k := range s.headers { - r.Header[k] = append(r.Header[k], s.headers[k]...) - s.headers.Del(k) - } - //queryParams - r.URL.RawQuery = s.queryParams.Encode() - - body, err = s.do(r) - return + return s.LaunchTo(urls, http.MethodGet) } // 通用的请求方法 @@ -216,6 +185,19 @@ func (s *SimpleRequest) LaunchTo(urls, method string) (body []byte, err error) { s.headers.Del(k) } //queryParams + if r.URL.RawQuery != "" { + values, err := url.ParseQuery(r.URL.RawQuery) + if err == nil { + newValues := url.Values{} + for k := range s.queryParams { + newValues.Set(k, values.Get(k)) + } + for k := range s.queryParams { + newValues.Set(k, s.queryParams.Get(k)) + } + s.queryParams = newValues + } + } r.URL.RawQuery = s.queryParams.Encode() body, err = s.do(r)