猿问

如何在golang中获取重定向网址而不是页面内容?

我正在向服务器发送请求,但它正在返回一个网页。有没有办法获取网页的网址?


package main


import (

    "fmt"

    "io/ioutil"

    "net/http"

)


func main() {

    req, err := http.NewRequest("GET", "https://www.google.com", nil)

    if err != nil {

        panic(err)

    }


    client := new(http.Client)

    response, err := client.Do(req)

    if err != nil {

        panic(err)

    }

    fmt.Println(ioutil.ReadAll(response.Body))

}


叮当猫咪
浏览 378回答 1
1回答

Helenr

您需要检查重定向并停止(捕获)它们。如果捕获重定向,则可以使用响应结构的 location 方法获取重定向 URL(发生重定向的目标)。package mainimport (    "errors"    "fmt"    "net/http")func main() {    req, err := http.NewRequest("GET", "https://www.google.com", nil)    if err != nil {        panic(err)    }    client := new(http.Client)    client.CheckRedirect = func(req *http.Request, via []*http.Request) error {        return errors.New("Redirect")    }    response, err := client.Do(req)    if err == nil {        if response.StatusCode == http.StatusFound { //status code 302            fmt.Println(response.Location())        }    } else {        panic(err)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答