请求正常, 参数拼接正常的版本
v0.0.9
This commit is contained in:
parent
ae3982faaa
commit
730e3462f6
24
base.go
24
base.go
|
@ -7,39 +7,39 @@ import (
|
|||
"reflect"
|
||||
)
|
||||
|
||||
func buildBodyRequest(ver, rawurl string, body *Body) *http.Request {
|
||||
func buildBodyRequest(wf *Workflow) *http.Request {
|
||||
var req *http.Request
|
||||
var err error
|
||||
contentType := ""
|
||||
|
||||
if body.IOBody == nil {
|
||||
req, err = http.NewRequest(ver, rawurl, nil)
|
||||
if wf.Body.IOBody == nil {
|
||||
req, err = http.NewRequest(wf.Method, wf.GetStringURL(), nil)
|
||||
} else {
|
||||
var bodybuf *bytes.Buffer
|
||||
switch body.IOBody.(type) {
|
||||
switch wf.Body.IOBody.(type) {
|
||||
case []byte:
|
||||
bodybuf = bytes.NewBuffer(body.IOBody.([]byte))
|
||||
bodybuf = bytes.NewBuffer(wf.Body.IOBody.([]byte))
|
||||
case *bytes.Buffer:
|
||||
bodybuf = bytes.NewBuffer(body.IOBody.(*bytes.Buffer).Bytes())
|
||||
bodybuf = bytes.NewBuffer(wf.Body.IOBody.(*bytes.Buffer).Bytes())
|
||||
default:
|
||||
panic(errors.New("the type is not exist, type is" + reflect.TypeOf(body.IOBody).String()))
|
||||
panic(errors.New("the type is not exist, type is" + reflect.TypeOf(wf.Body.IOBody).String()))
|
||||
}
|
||||
req, err = http.NewRequest(ver, rawurl, bodybuf)
|
||||
req, err = http.NewRequest(wf.Method, wf.GetStringURL(), bodybuf)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if body.ContentType != "" {
|
||||
if body.ContentType == TypeContentEmpty {
|
||||
if wf.Body.ContentType != "" {
|
||||
if wf.Body.ContentType == TypeContentEmpty {
|
||||
contentType = ""
|
||||
} else {
|
||||
contentType = body.ContentType
|
||||
contentType = wf.Body.ContentType
|
||||
}
|
||||
} else {
|
||||
if contentType == "" {
|
||||
if ver == "POST" || ver == "PUT" || ver == "PATCH" {
|
||||
if wf.Method == "POST" || wf.Method == "PUT" || wf.Method == "PATCH" {
|
||||
contentType = TypeURLENCODED
|
||||
}
|
||||
}
|
||||
|
|
33
session.go
33
session.go
|
@ -179,10 +179,20 @@ func (ses *Session) SetQuery(values url.Values) {
|
|||
}
|
||||
|
||||
// GetQuery 获取get query的值
|
||||
func (ses *Session) GetQuery(values url.Values) url.Values {
|
||||
func (ses *Session) GetQuery() url.Values {
|
||||
return ses.Query
|
||||
}
|
||||
|
||||
// SetHeader 设置set Header的值
|
||||
func (ses *Session) SetHeader(header http.Header) {
|
||||
ses.Header = header
|
||||
}
|
||||
|
||||
// GetHeader 获取get Header的值
|
||||
func (ses *Session) GetHeader() http.Header {
|
||||
return ses.Header
|
||||
}
|
||||
|
||||
// SetCookies 设置Cookies 或者添加Cookies Del
|
||||
func (ses *Session) SetCookies(u *url.URL, cookies []*http.Cookie) {
|
||||
ses.cookiejar.SetCookies(u, cookies)
|
||||
|
@ -217,57 +227,50 @@ func (ses *Session) ClearCookies() {
|
|||
|
||||
// Get 请求
|
||||
func (ses *Session) Get(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "GET"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
// Post 请求
|
||||
func (ses *Session) Post(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "POST"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
// Put 请求
|
||||
func (ses *Session) Put(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "PUT"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
// Patch 请求
|
||||
func (ses *Session) Patch(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "PATCH"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
// Delete 请求
|
||||
func (ses *Session) Delete(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "DELETE"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
// Head 请求
|
||||
func (ses *Session) Head(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "HEAD"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
// Options 请求
|
||||
func (ses *Session) Options(url string) *Workflow {
|
||||
wf := NewWorkflow(ses)
|
||||
wf := NewWorkflow(ses, url)
|
||||
wf.Method = "OPTIONS"
|
||||
wf.SetURL(url)
|
||||
return wf
|
||||
}
|
||||
|
||||
|
|
37
workflow.go
37
workflow.go
|
@ -5,6 +5,7 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Workflow 工作流
|
||||
|
@ -18,10 +19,12 @@ type Workflow struct {
|
|||
}
|
||||
|
||||
// NewWorkflow new and init workflow
|
||||
func NewWorkflow(ses *Session) *Workflow {
|
||||
func NewWorkflow(ses *Session, u string) *Workflow {
|
||||
wf := &Workflow{}
|
||||
wf.SwitchSession(ses)
|
||||
|
||||
wf.SetURL(u)
|
||||
|
||||
wf.Body = &Body{}
|
||||
wf.Header = make(http.Header)
|
||||
wf.Cookies = make(map[string]*http.Cookie)
|
||||
|
@ -45,6 +48,16 @@ func (wf *Workflow) SetHeader(key, value string) *Workflow {
|
|||
return wf
|
||||
}
|
||||
|
||||
// GetHeader 获取Workflow Header
|
||||
func (wf *Workflow) GetHeader() http.Header {
|
||||
return wf.Header
|
||||
}
|
||||
|
||||
// GetCombineHeader 获取后的Header信息
|
||||
func (wf *Workflow) GetCombineHeader() http.Header {
|
||||
return mergeMapList(wf.session.Header, wf.Header)
|
||||
}
|
||||
|
||||
// DelHeader 添加头信息 Get方法从Header参数上获取
|
||||
func (wf *Workflow) DelHeader(key string) *Workflow {
|
||||
wf.Header.Del(key)
|
||||
|
@ -84,7 +97,8 @@ func (wf *Workflow) DelCookie(name interface{}) *Workflow {
|
|||
|
||||
// GetStringURL 获取url的string形式
|
||||
func (wf *Workflow) GetStringURL() string {
|
||||
return wf.ParsedURL.String()
|
||||
u := strings.Split(wf.ParsedURL.String(), "?")[0] + "?" + wf.GetCombineQuery().Encode()
|
||||
return u
|
||||
}
|
||||
|
||||
// SetURL 设置 url
|
||||
|
@ -97,17 +111,22 @@ func (wf *Workflow) SetURL(srcURL string) *Workflow {
|
|||
return wf
|
||||
}
|
||||
|
||||
// GetURLQuery 获取Query参数
|
||||
func (wf *Workflow) GetURLQuery() url.Values {
|
||||
// GetQuery 获取Query参数
|
||||
func (wf *Workflow) GetQuery() url.Values {
|
||||
return wf.ParsedURL.Query()
|
||||
}
|
||||
|
||||
// GetCombineQuery 获取Query参数
|
||||
func (wf *Workflow) GetCombineQuery() url.Values {
|
||||
if wf.ParsedURL != nil {
|
||||
vs := wf.ParsedURL.Query()
|
||||
return mergeMapList(wf.session.Query, vs)
|
||||
return mergeMapList(wf.session.GetQuery(), vs)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetURLQuery 设置Query参数
|
||||
func (wf *Workflow) SetURLQuery(query url.Values) *Workflow {
|
||||
// SetQuery 设置Query参数
|
||||
func (wf *Workflow) SetQuery(query url.Values) *Workflow {
|
||||
if query == nil {
|
||||
return wf
|
||||
}
|
||||
|
@ -232,7 +251,6 @@ func mergeMapList(headers ...map[string][]string) map[string][]string {
|
|||
// setHeaderRequest 设置request的头
|
||||
func setHeaderRequest(req *http.Request, wf *Workflow) {
|
||||
req.Header = mergeMapList(req.Header, wf.session.Header, wf.Header)
|
||||
log.Println(wf.Header, wf.session.Header)
|
||||
}
|
||||
|
||||
// setHeaderRequest 设置request的临时Cookie, 永久需要在session上设置cookie
|
||||
|
@ -247,7 +265,7 @@ func setTempCookieRequest(req *http.Request, wf *Workflow) {
|
|||
// Execute 执行
|
||||
func (wf *Workflow) Execute() (*Response, error) {
|
||||
|
||||
req := buildBodyRequest(wf.Method, wf.GetStringURL(), wf.Body)
|
||||
req := buildBodyRequest(wf)
|
||||
|
||||
setHeaderRequest(req, wf)
|
||||
setTempCookieRequest(req, wf)
|
||||
|
@ -255,6 +273,7 @@ func (wf *Workflow) Execute() (*Response, error) {
|
|||
if wf.session.auth != nil {
|
||||
req.SetBasicAuth(wf.session.auth.User, wf.session.auth.Password)
|
||||
}
|
||||
log.Println(req.Header)
|
||||
|
||||
resp, err := wf.session.client.Do(req)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue
Block a user