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)
}
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
}
它应该返回一个你想要的数组。
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()方法将返回空字符串。
- 3 回答
- 0 关注
- 366 浏览
添加回答
举报