fix req.Header must merge other Header
This commit is contained in:
parent
13dfdee51c
commit
4b77382218
69
workflow.go
69
workflow.go
|
@ -110,6 +110,7 @@ func (wf *Workflow) SetURLQuery(query url.Values) *Workflow {
|
||||||
if query == nil {
|
if query == nil {
|
||||||
return wf
|
return wf
|
||||||
}
|
}
|
||||||
|
query = (url.Values)(mergeMapList(wf.session.Query, query))
|
||||||
wf.ParsedURL.RawQuery = query.Encode()
|
wf.ParsedURL.RawQuery = query.Encode()
|
||||||
return wf
|
return wf
|
||||||
}
|
}
|
||||||
|
@ -153,44 +154,46 @@ func (wf *Workflow) SetURLRawPath(path string) *Workflow {
|
||||||
return wf
|
return wf
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetBodyParams 参数设晚上
|
// SetBodyParams 参数设置
|
||||||
func (wf *Workflow) SetBodyParams(params ...interface{}) *Workflow {
|
func (wf *Workflow) SetBodyParams(params ...interface{}) *Workflow {
|
||||||
if params == nil {
|
if params != nil {
|
||||||
return wf
|
|
||||||
}
|
|
||||||
|
|
||||||
plen := len(params)
|
plen := len(params)
|
||||||
defaultContentType := TypeURLENCODED
|
defaultContentType := TypeURLENCODED
|
||||||
|
|
||||||
if plen >= 2 {
|
if plen >= 2 {
|
||||||
t := params[plen-1]
|
t := params[plen-1]
|
||||||
defaultContentType = t.(string)
|
defaultContentType = t.(string)
|
||||||
wf.Body.ContentType = defaultContentType
|
wf.Body.ContentType = defaultContentType
|
||||||
} else {
|
} else {
|
||||||
wf.Body.ContentType = defaultContentType
|
wf.Body.ContentType = defaultContentType
|
||||||
}
|
}
|
||||||
|
|
||||||
if defaultContentType == TypeFormData {
|
if defaultContentType == TypeFormData {
|
||||||
// TODO: form-data
|
// TODO: form-data
|
||||||
createMultipart(wf.Body, params)
|
createMultipart(wf.Body, params)
|
||||||
} else {
|
} else {
|
||||||
var values url.Values
|
|
||||||
switch param := params[0].(type) {
|
var values url.Values
|
||||||
case map[string]string:
|
switch param := params[0].(type) {
|
||||||
values := make(url.Values)
|
case map[string]string:
|
||||||
for k, v := range param {
|
values := make(url.Values)
|
||||||
values.Set(k, v)
|
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
|
return wf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +229,7 @@ func mergeMapList(header1, header2 map[string][]string) map[string][]string {
|
||||||
if mergeValue, ok := merged[key]; ok {
|
if mergeValue, ok := merged[key]; ok {
|
||||||
merged[key] = append(mergeValue, v)
|
merged[key] = append(mergeValue, v)
|
||||||
} else {
|
} 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的头
|
// setHeaderRequest 设置request的头
|
||||||
func setHeaderRequest(req *http.Request, wf *Workflow) {
|
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
|
// setHeaderRequest 设置request的临时Cookie, 永久需要在session上设置cookie
|
||||||
|
|
Loading…
Reference in New Issue
Block a user