为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 将 http.Header 转化为数组

Golang 将 http.Header 转化为数组

Go
Qyouu 2021-12-20 10:42:53
我正在发送 POST 请求:req, err := http.NewRequest("POST", link, bytes.NewBuffer(jsonStr))client := &http.Client{Timeout: tm}resp, err := client.Do(req)我收到resp.Header的格式与类型http.Header我需要这样的东西:[    "Server: nginx/1.4.4",    "Date: Wed, 24 Feb 2016 19:09:49 GMT"]我不知道如何处理这个问题,因为我不知道如何处理http.Header数据类型。有人可以帮忙吗
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

resp.Header是 类型http.Header。您可以在文档中看到该类型也是 a map,因此您可以通过两种不同的方式访问它:


1) 通过 usinghttp.Header的方法:


serverValue := resp.Header().Get("Server")

dataValue := resp.Header().Get("Date")

如果标头存在,您将获得它的第一个值(请记住,单个标头名称可能有多个值);否则你会得到一个空字符串。


2) 通过 usingmap的方法:


serverValue, ok := resp.Header()["Server"]

dataValue, ok := resp.Header()["Date"]

如果标头存在,ok将会是true(即标头存在)并且您将获得包含该标头的所有值的一段字符串;否则,ok将是false(即标题不存在)。


使用您喜欢的任何方法。


如果您需要遍历所有标头值,您可以使用以下方法:


for name, value := range resp.Header() {

    fmt.Printf("%v: %v\n", name, value)

}


查看完整回答
反对 回复 2021-12-20
?
呼唤远方

TA贡献1856条经验 获得超11个赞

你可以使用这样的函数:


func HeaderToArray(header http.Header) (res []string) {

    for name, values := range header {

        for _, value := range values {

            res = append(res, fmt.Sprintf("%s: %s", name, value))

        }

    }

    return

}

它应该返回一个你想要的数组。


查看完整回答
反对 回复 2021-12-20
?
青春有我

TA贡献1784条经验 获得超8个赞

此解决方案适用于go version go1.13 windows/amd64.

来自http.Request包含Header对象的请求对象。我们在net/http这里使用包。您可以使用以下方法按名称获取所有标题的值:


import(

    "net/http"

)


type RequestHeaders struct {

    ContentType      string      `json: "content-type"`

    Authorization    string      `json: "authorization"`

}


func getHeaders(r *http.Request) RequestHeaders {

        contentType := r.Header.Get("Content-Type")

        authorization := r.Header.Get("Authorization")

        headers := RequestHeaders{

                        Content-Type: contentType,

                        Authorization: authorization}

        return headers

}

您可以看到我们正在使用r.Header.Get("Content-Type")方法来获取标头的值。


如果标题丢失,该Get()方法将返回空字符串。


查看完整回答
反对 回复 2021-12-20
  • 3 回答
  • 0 关注
  • 366 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信