diff --git a/g/net/ghttp/ghttp_client_request.go b/g/net/ghttp/ghttp_client_request.go index 049ade5e5..aa7bf73e7 100644 --- a/g/net/ghttp/ghttp_client_request.go +++ b/g/net/ghttp/ghttp_client_request.go @@ -19,7 +19,8 @@ import ( // http客户端 type Client struct { - http.Client + http.Client // 底层http client对象 + header map[string]string // header } // http客户端对象指针 @@ -30,9 +31,15 @@ func NewClient() (*Client) { DisableKeepAlives: true, }, }, + make(map[string]string), } } +// 设置HTTP Headerss +func (c *Client) SetHeader(key, value string) { + c.header[key] = value +} + // 设置请求过期时间 func (c *Client) SetTimeOut(t time.Duration) { c.Timeout = t @@ -52,8 +59,7 @@ func (c *Client) Put(url, data string) (*ClientResponse, error) { // 支持文件上传,需要字段格式为:FieldName=@file: func (c *Client) Post(url, data string) (*ClientResponse, error) { var req *http.Request - hasfile := strings.Contains(data, "@file:") - if hasfile { + if strings.Contains(data, "@file:") { buffer := new(bytes.Buffer) writer := multipart.NewWriter(buffer) for _, item := range strings.Split(data, "&") { @@ -90,6 +96,12 @@ func (c *Client) Post(url, data string) (*ClientResponse, error) { req.Header.Set("Content-Type", "application/x-www-form-urlencoded") } } + // 自定义header + if len(c.header) > 0 { + for k, v := range c.header { + req.Header.Set(k, v) + } + } // 执行请求 resp, err := c.Do(req) if err != nil { @@ -134,7 +146,13 @@ func (c *Client) DoRequest(method, url string, data []byte) (*ClientResponse, er if err != nil { return nil, err } - + // 自定义header + if len(c.header) > 0 { + for k, v := range c.header { + req.Header.Set(k, v) + } + } + // 执行请求 resp, err := c.Do(req) if err != nil { return nil, err diff --git a/g/net/ghttp/ghttp_server_cookie.go b/g/net/ghttp/ghttp_server_cookie.go index 5aac7820c..363d57779 100644 --- a/g/net/ghttp/ghttp_server_cookie.go +++ b/g/net/ghttp/ghttp_server_cookie.go @@ -64,6 +64,17 @@ func (c *Cookie) init() { c.mu.Unlock() } +// 获取所有的Cookie并构造成map返回 +func (c *Cookie) Map() map[string]string { + m := make(map[string]string) + c.mu.RLock() + defer c.mu.RUnlock() + for k, v := range c.data { + m[k] = v.value + } + return m +} + // 获取SessionId func (c *Cookie) SessionId() string { v := c.Get(c.server.GetSessionIdName()) diff --git a/geg/net/ghttp/client/cookie/client.go b/geg/net/ghttp/client/cookie/client.go new file mode 100644 index 000000000..b83b598c2 --- /dev/null +++ b/geg/net/ghttp/client/cookie/client.go @@ -0,0 +1,17 @@ +package main + +import ( + "fmt" + "gitee.com/johng/gf/g/os/glog" + "gitee.com/johng/gf/g/net/ghttp" +) + +func main() { + c := ghttp.NewClient() + c.SetHeader("Cookie", "name=john; score=100") + if r, e := c.Get("http://127.0.0.1:8199/"); e != nil { + glog.Error(e) + } else { + fmt.Println(string(r.ReadAll())) + } +} diff --git a/geg/net/ghttp/client/cookie/server.go b/geg/net/ghttp/client/cookie/server.go new file mode 100644 index 000000000..40cccfe16 --- /dev/null +++ b/geg/net/ghttp/client/cookie/server.go @@ -0,0 +1,15 @@ +package main + +import ( + "gitee.com/johng/gf/g" + "gitee.com/johng/gf/g/net/ghttp" +) + +func main() { + s := g.Server() + s.BindHandler("/", func(r *ghttp.Request){ + r.Response.Writeln(r.Cookie.Map()) + }) + s.SetPort(8199) + s.Run() +} \ No newline at end of file diff --git a/geg/net/http_client.go b/geg/net/ghttp/client/get.go similarity index 100% rename from geg/net/http_client.go rename to geg/net/ghttp/client/get.go diff --git a/geg/net/ghttp/cookie.go b/geg/net/ghttp/server/cookie.go similarity index 100% rename from geg/net/ghttp/cookie.go rename to geg/net/ghttp/server/cookie.go diff --git a/geg/net/ghttp/domain.go b/geg/net/ghttp/server/domain.go similarity index 100% rename from geg/net/ghttp/domain.go rename to geg/net/ghttp/server/domain.go diff --git a/geg/net/ghttp/events.go b/geg/net/ghttp/server/events.go similarity index 100% rename from geg/net/ghttp/events.go rename to geg/net/ghttp/server/events.go diff --git a/geg/net/ghttp/hello.go b/geg/net/ghttp/server/hello.go similarity index 100% rename from geg/net/ghttp/hello.go rename to geg/net/ghttp/server/hello.go diff --git a/geg/net/ghttp/https/https.go b/geg/net/ghttp/server/https/https.go similarity index 100% rename from geg/net/ghttp/https/https.go rename to geg/net/ghttp/server/https/https.go diff --git a/geg/net/ghttp/https/https_http.go b/geg/net/ghttp/server/https/https_http.go similarity index 100% rename from geg/net/ghttp/https/https_http.go rename to geg/net/ghttp/server/https/https_http.go diff --git a/geg/net/ghttp/https/server.crt b/geg/net/ghttp/server/https/server.crt similarity index 100% rename from geg/net/ghttp/https/server.crt rename to geg/net/ghttp/server/https/server.crt diff --git a/geg/net/ghttp/https/server.key b/geg/net/ghttp/server/https/server.key similarity index 100% rename from geg/net/ghttp/https/server.key rename to geg/net/ghttp/server/https/server.key diff --git a/geg/net/ghttp/https/server.key.public b/geg/net/ghttp/server/https/server.key.public similarity index 100% rename from geg/net/ghttp/https/server.key.public rename to geg/net/ghttp/server/https/server.key.public diff --git a/geg/net/ghttp/log.go b/geg/net/ghttp/server/log.go similarity index 100% rename from geg/net/ghttp/log.go rename to geg/net/ghttp/server/log.go diff --git a/geg/net/ghttp/performance/beego/beegoRule.go b/geg/net/ghttp/server/performance/beego/beegoRule.go similarity index 100% rename from geg/net/ghttp/performance/beego/beegoRule.go rename to geg/net/ghttp/server/performance/beego/beegoRule.go diff --git a/geg/net/ghttp/performance/beego/beegoStatic.go b/geg/net/ghttp/server/performance/beego/beegoStatic.go similarity index 100% rename from geg/net/ghttp/performance/beego/beegoStatic.go rename to geg/net/ghttp/server/performance/beego/beegoStatic.go diff --git a/geg/net/ghttp/performance/client.go b/geg/net/ghttp/server/performance/client.go similarity index 100% rename from geg/net/ghttp/performance/client.go rename to geg/net/ghttp/server/performance/client.go diff --git a/geg/net/ghttp/performance/gf/gfRule.go b/geg/net/ghttp/server/performance/gf/gfRule.go similarity index 100% rename from geg/net/ghttp/performance/gf/gfRule.go rename to geg/net/ghttp/server/performance/gf/gfRule.go diff --git a/geg/net/ghttp/performance/gf/gfStatic.go b/geg/net/ghttp/server/performance/gf/gfStatic.go similarity index 100% rename from geg/net/ghttp/performance/gf/gfStatic.go rename to geg/net/ghttp/server/performance/gf/gfStatic.go diff --git a/geg/net/ghttp/performance/gin/ginRule.go b/geg/net/ghttp/server/performance/gin/ginRule.go similarity index 100% rename from geg/net/ghttp/performance/gin/ginRule.go rename to geg/net/ghttp/server/performance/gin/ginRule.go diff --git a/geg/net/ghttp/performance/gin/ginStatic.go b/geg/net/ghttp/server/performance/gin/ginStatic.go similarity index 100% rename from geg/net/ghttp/performance/gin/ginStatic.go rename to geg/net/ghttp/server/performance/gin/ginStatic.go diff --git a/geg/net/ghttp/ports.go b/geg/net/ghttp/server/ports.go similarity index 100% rename from geg/net/ghttp/ports.go rename to geg/net/ghttp/server/ports.go diff --git a/geg/net/ghttp/pprof.go b/geg/net/ghttp/server/pprof.go similarity index 100% rename from geg/net/ghttp/pprof.go rename to geg/net/ghttp/server/pprof.go diff --git a/geg/net/ghttp/reload/admin.go b/geg/net/ghttp/server/reload/admin.go similarity index 100% rename from geg/net/ghttp/reload/admin.go rename to geg/net/ghttp/server/reload/admin.go diff --git a/geg/net/ghttp/reload/https.go b/geg/net/ghttp/server/reload/https.go similarity index 100% rename from geg/net/ghttp/reload/https.go rename to geg/net/ghttp/server/reload/https.go diff --git a/geg/net/ghttp/reload/https_http.go b/geg/net/ghttp/server/reload/https_http.go similarity index 100% rename from geg/net/ghttp/reload/https_http.go rename to geg/net/ghttp/server/reload/https_http.go diff --git a/geg/net/ghttp/reload/multi_port.go b/geg/net/ghttp/server/reload/multi_port.go similarity index 100% rename from geg/net/ghttp/reload/multi_port.go rename to geg/net/ghttp/server/reload/multi_port.go diff --git a/geg/net/ghttp/reload/multi_port_and_server.go b/geg/net/ghttp/server/reload/multi_port_and_server.go similarity index 100% rename from geg/net/ghttp/reload/multi_port_and_server.go rename to geg/net/ghttp/server/reload/multi_port_and_server.go diff --git a/geg/net/ghttp/reload/simple.go b/geg/net/ghttp/server/reload/simple.go similarity index 100% rename from geg/net/ghttp/reload/simple.go rename to geg/net/ghttp/server/reload/simple.go diff --git a/geg/net/ghttp/router.go b/geg/net/ghttp/server/router.go similarity index 100% rename from geg/net/ghttp/router.go rename to geg/net/ghttp/server/router.go diff --git a/geg/net/ghttp/server1.go b/geg/net/ghttp/server/server1.go similarity index 100% rename from geg/net/ghttp/server1.go rename to geg/net/ghttp/server/server1.go diff --git a/geg/net/ghttp/server2.go b/geg/net/ghttp/server/server2.go similarity index 100% rename from geg/net/ghttp/server2.go rename to geg/net/ghttp/server/server2.go diff --git a/geg/net/ghttp/session.go b/geg/net/ghttp/server/session.go similarity index 100% rename from geg/net/ghttp/session.go rename to geg/net/ghttp/server/session.go diff --git a/geg/net/ghttp/status.go b/geg/net/ghttp/server/status.go similarity index 100% rename from geg/net/ghttp/status.go rename to geg/net/ghttp/server/status.go diff --git a/geg/net/ghttp/status_map.go b/geg/net/ghttp/server/status_map.go similarity index 100% rename from geg/net/ghttp/status_map.go rename to geg/net/ghttp/server/status_map.go diff --git a/geg/net/ghttp/status_redirect.go b/geg/net/ghttp/server/status_redirect.go similarity index 100% rename from geg/net/ghttp/status_redirect.go rename to geg/net/ghttp/server/status_redirect.go diff --git a/geg/net/ghttp/upload_client.go b/geg/net/ghttp/server/upload_client.go similarity index 100% rename from geg/net/ghttp/upload_client.go rename to geg/net/ghttp/server/upload_client.go diff --git a/geg/net/ghttp/upload_server.go b/geg/net/ghttp/server/upload_server.go similarity index 100% rename from geg/net/ghttp/upload_server.go rename to geg/net/ghttp/server/upload_server.go diff --git a/geg/net/ghttp/websocket/echo/index.html b/geg/net/ghttp/server/websocket/echo/index.html similarity index 100% rename from geg/net/ghttp/websocket/echo/index.html rename to geg/net/ghttp/server/websocket/echo/index.html diff --git a/geg/net/ghttp/websocket/echo/main.go b/geg/net/ghttp/server/websocket/echo/main.go similarity index 100% rename from geg/net/ghttp/websocket/echo/main.go rename to geg/net/ghttp/server/websocket/echo/main.go