Searching...

自定义Header

http客户端发起请求时可以自定义发送给服务端的Header内容,该特性使用SetHeader/SetHeaderRaw方法实现。我们来看一个客户端自定义Cookie的例子。

  1. 客户端

    https://github.com/gogf/gf/blob/master/.example/net/ghttp/client/cookie/client.go

    package main
    
    
    import (
        "fmt"
        "github.com/gogf/gf/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 {
            panic(e)
        } else {
            fmt.Println(r.ReadAllString())
        }
    }
    

    通过ghttp.NewClient()创建一个自定义的http请求客户端对象,并通过c.SetHeader("Cookie", "name=john; score=100")设置自定义的Cookie,这里我们设置了两个示例用的Cookie参数,一个name,一个score,注意多个Cookie参数使用;符号分隔。

  2. 服务端

    https://github.com/gogf/gf/blob/master/.example/net/ghttp/client/cookie/server.go

    package main
    
    
    import (
        "github.com/gogf/gf/frame/g"
        "github.com/gogf/gf/net/ghttp"
    )
    
    
    func main() {
        s := g.Server()
        s.BindHandler("/", func(r *ghttp.Request){
            r.Response.Writeln(r.Cookie.Map())
        })
        s.SetPort(8199)
        s.Run()
    }
    

    服务端的逻辑很简单,直接将接收到的Cookie参数全部打印出来。

  3. 执行结果

    客户端代码执行后,终端将会打印出服务端的返回结果,如下:

    map[name:john score:100]
    

    可以看到,服务端已经接收到了客户端自定义的Cookie参数。

  4. 使用SetHeaderRaw自定义Header

    这个方法十分强大,给个例子:

    c := ghttp.NewClient()
    c.SetHeaderRaw(`
        accept-encoding: gzip, deflate, br
        accept-language: zh-CN,zh;q=0.9,en;q=0.8
        referer: https://idonottell.you
        cookie: name=john
        user-agent: my test http client
    `)
    if r, e := c.Get("http://127.0.0.1:8199/"); e != nil {
        panic(e)
    } else {
        fmt.Println(r.ReadAllString())
    }
    

    够简单吧!