如何在GO语言中执行HEAD请求?

8
我想使用GO net/http获取页面的内容长度?在终端中,我可以使用curl -i -X HEAD https://golang.org命令来检查content-length字段。

1
使用Curl,我认为你也可以使用 curl -I https://golang.org (参考:https://curl.haxx.se/docs/manpage.html#-I)。 - dmitris
3个回答

17

使用http.Head()

res, err := http.Head("https://golang.org")
if err != nil {
    panic(err)
}
contentlength:=res.ContentLength
fmt.Printf("ContentLength:%v",contentlength)

如何在请求中添加主机头 - hunter_tech

1
带有超时的。
package main

import (
    "net/http"
    "os"
    "fmt"
    "time"
)

func main() {
    var client = &http.Client{
        Timeout: time.Second * 10,
    }

    res, err := client.Head("https://stackoverflow.com")
    if err != nil {
        if os.IsTimeout(err) {
            // timeout
            panic(err)
        } else {
            panic(err)
        }
    }
    
    fmt.Println("Status:", res.StatusCode)
    fmt.Println("ContentLength:", res.ContentLength)
}

https://play.golang.org/p/5UAA-PUyoZc


0

另一个选项:

package main
import "net/http"

func main() {
   req, e := http.NewRequest("HEAD", "https://stackoverflow.com", nil)
   if e != nil {
      panic(e)
   }
   res, e := new(http.Client).Do(req)
   if e != nil {
      panic(e)
   }
   println(res.StatusCode == 200)
}

https://golang.org/pkg/net/http#NewRequest


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接