From 13dfdee51c8eb7285df57de687845f6bd255880b Mon Sep 17 00:00:00 2001 From: huangsimin Date: Wed, 24 Oct 2018 16:59:17 +0800 Subject: [PATCH] update fix --- session.go | 1 + workflow.go | 27 ++++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/session.go b/session.go index 7b30409..8bb3d2c 100644 --- a/session.go +++ b/session.go @@ -38,6 +38,7 @@ type Session struct { auth *BasicAuth Header http.Header + Query url.Values } const ( diff --git a/workflow.go b/workflow.go index c29ec1d..74ac2e4 100644 --- a/workflow.go +++ b/workflow.go @@ -99,9 +99,9 @@ func (wf *Workflow) SetURL(srcURL string) *Workflow { // GetURLQuery 获取Query参数 func (wf *Workflow) GetURLQuery() url.Values { if wf.ParsedURL != nil { - return wf.ParsedURL.Query() + vs := wf.ParsedURL.Query() + return mergeMapList(wf.session.Query, vs) } - return nil } @@ -194,10 +194,12 @@ func (wf *Workflow) SetBodyParams(params ...interface{}) *Workflow { return wf } -// setHeaderRequest 设置request的头 -func setHeaderRequest(req *http.Request, wf *Workflow) { +func mergeMapList(header1, header2 map[string][]string) map[string][]string { + set := make(map[string]map[string]int) - for key, values := range wf.session.Header { + merged := make(map[string][]string) + + for key, values := range header1 { for _, v := range values { if vs, ok := set[key]; ok { vs[v] = 1 @@ -207,7 +209,7 @@ func setHeaderRequest(req *http.Request, wf *Workflow) { } } } - for key, values := range wf.Header { + for key, values := range header2 { for _, v := range values { if vs, ok := set[key]; ok { vs[v] = 1 @@ -220,10 +222,21 @@ func setHeaderRequest(req *http.Request, wf *Workflow) { for key, mvalue := range set { for v := range mvalue { - req.Header.Add(key, v) + // merged.Add(key, v) + if mergeValue, ok := merged[key]; ok { + merged[key] = append(mergeValue, v) + } else { + merged[key] = append(mergeValue, v) + } } } + return merged +} + +// setHeaderRequest 设置request的头 +func setHeaderRequest(req *http.Request, wf *Workflow) { + req.Header = mergeMapList(wf.session.Header, wf.Header) } // setHeaderRequest 设置request的临时Cookie, 永久需要在session上设置cookie