fix req.Header must merge other Header

This commit is contained in:
huangsimin 2018-10-24 18:19:05 +08:00
parent 13dfdee51c
commit 4b77382218

View File

@ -110,6 +110,7 @@ func (wf *Workflow) SetURLQuery(query url.Values) *Workflow {
if query == nil {
return wf
}
query = (url.Values)(mergeMapList(wf.session.Query, query))
wf.ParsedURL.RawQuery = query.Encode()
return wf
}
@ -153,44 +154,46 @@ func (wf *Workflow) SetURLRawPath(path string) *Workflow {
return wf
}
// SetBodyParams 参数设晚上
// SetBodyParams 参数设
func (wf *Workflow) SetBodyParams(params ...interface{}) *Workflow {
if params == nil {
return wf
}
if params != nil {
plen := len(params)
defaultContentType := TypeURLENCODED
plen := len(params)
defaultContentType := TypeURLENCODED
if plen >= 2 {
t := params[plen-1]
defaultContentType = t.(string)
wf.Body.ContentType = defaultContentType
} else {
wf.Body.ContentType = defaultContentType
}
if plen >= 2 {
t := params[plen-1]
defaultContentType = t.(string)
wf.Body.ContentType = defaultContentType
} else {
wf.Body.ContentType = defaultContentType
}
if defaultContentType == TypeFormData {
// TODO: form-data
createMultipart(wf.Body, params)
} else {
var values url.Values
switch param := params[0].(type) {
case map[string]string:
values := make(url.Values)
for k, v := range param {
values.Set(k, v)
if defaultContentType == TypeFormData {
// TODO: form-data
createMultipart(wf.Body, params)
} else {
var values url.Values
switch param := params[0].(type) {
case map[string]string:
values := make(url.Values)
for k, v := range param {
values.Set(k, v)
}
wf.Body.IOBody = []byte(values.Encode())
case map[string][]string:
values = param
wf.Body.IOBody = []byte(values.Encode())
case string:
wf.Body.IOBody = []byte(param)
case []byte:
wf.Body.IOBody = param
}
wf.Body.IOBody = []byte(values.Encode())
case map[string][]string:
values = param
wf.Body.IOBody = []byte(values.Encode())
case string:
wf.Body.IOBody = []byte(param)
case []byte:
wf.Body.IOBody = param
}
}
return wf
}
@ -226,7 +229,7 @@ func mergeMapList(header1, header2 map[string][]string) map[string][]string {
if mergeValue, ok := merged[key]; ok {
merged[key] = append(mergeValue, v)
} else {
merged[key] = append(mergeValue, v)
merged[key] = []string{v}
}
}
}
@ -236,7 +239,7 @@ func mergeMapList(header1, header2 map[string][]string) map[string][]string {
// setHeaderRequest 设置request的头
func setHeaderRequest(req *http.Request, wf *Workflow) {
req.Header = mergeMapList(wf.session.Header, wf.Header)
req.Header = mergeMapList(req.Header, mergeMapList(wf.session.Header, wf.Header))
}
// setHeaderRequest 设置request的临时Cookie, 永久需要在session上设置cookie