自定义Header

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

  1. 客户端

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

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/gogf/gf/net/ghttp"
    5. )
    6. func main() {
    7. c := ghttp.NewClient()
    8. c.SetHeader("Cookie", "name=john; score=100")
    9. if r, e := c.Get("http://127.0.0.1:8199/"); e != nil {
    10. panic(e)
    11. } else {
    12. fmt.Println(r.ReadAllString())
    13. }
    14. }

    通过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

    1. package main
    2. import (
    3. "github.com/gogf/gf/frame/g"
    4. "github.com/gogf/gf/net/ghttp"
    5. )
    6. func main() {
    7. s := g.Server()
    8. s.BindHandler("/", func(r *ghttp.Request){
    9. r.Response.Writeln(r.Cookie.Map())
    10. })
    11. s.SetPort(8199)
    12. s.Run()
    13. }

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

  3. 执行结果

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

    1. map[name:john score:100]

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

  4. 使用SetHeaderRaw自定义Header

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

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

    够简单吧!