修复query param直接放在url的问号后面时,会被清空的问题

master
徐俊杰 1 year ago
parent a2cde2c0a5
commit 099aa53a4c

@ -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)

Loading…
Cancel
Save