From 03ffea28fe8ea799b2ae9fc04e438b44a9253faf Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 16 Dec 2020 20:02:00 +0800 Subject: [PATCH] 1 --- httpcli.go | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/httpcli.go b/httpcli.go index ed0bdaa..2734000 100644 --- a/httpcli.go +++ b/httpcli.go @@ -7,11 +7,40 @@ import ( "strings" ) +const ( + HTTP_OPT_ADD_HEADER = iota + HTTP_OPT_SET_PROXY = iota +) + +func internalSetOpt(client *http.Client, request *http.Request, opt int32, key *XValue, val *XValue) { + switch opt { + case HTTP_OPT_ADD_HEADER: + request.Header.Add(key.GetString(), val.GetString()) + default: + panic("error http opt") + } +} + func HttpGet(url string, params *XObject) (string, error) { + return HttpGetEx(url, params, nil) +} + +func HttpGetEx(url string, params *XObject, + initFunc func(setOpt func(int32, *XValue, *XValue))) (string, error) { if !StrContains(url, "?") { url = url + "?" } - if resp, err := http.Get(url); err == nil { + client := &http.Client{} + request, err := http.NewRequest("GET", url, nil) + if err != nil { + panic("http.NewRequest error") + } + if initFunc != nil { + initFunc(func (opt int32, key *XValue, val *XValue) { + internalSetOpt(client, request, opt, key, val) + }) + } + if resp, err := client.Do(request); err == nil { if resp.StatusCode != 200 { return "", errors.New("HttpGet error Status:" + resp.Status) }