Golang:从 HTTP 响应中获取响应重定向 URL

Golang: Getting the response-redirect URL from an HTTP response

我正在尝试在 Go 中使用 http.Get(url) 发出 HTTP 请求,我想在浏览器中打开响应。我正在使用 browser.OpenURL() 启动系统浏览器,但我不知道如何获得响应 url.

在Python中,使用requests库,是response对象的一个​​属性。 我可以像这样在浏览器中获取并打开它(使用浏览器库):

response = requests.get(endpoint)
browser.open(response.url)

我如何使用 Go 中的 http/net 库完成此操作?响应对象是一个不包含该属性的结构。

我正在尝试调用 Spotify API 来验证应用程序,这需要打开浏览器 window 供用户输入。到目前为止,我得到了这个:

func getAuth(endpoint *url.Url) {
    request, _ := http.NewRequest("GET", endpoint.string(), nil)
    client := &http.Client{}
    resp, err := client.Do(request)
    if err != nil {
        panic(err)
    }
    headers := resp.Header
    page, _ := ioutil.ReadAll(resp.Body)

在哪里可以获得响应 URL 或者如何处理响应以便在浏览器中打开它?

如果存在重定向,Go 将更新响应中的 Request 结构。

resp.Request.URL 就是您要找的。

// Request is the request that was sent to obtain this Response.
// Request's Body is nil (having already been consumed).
// This is only populated for Client requests.
Request *Request

只需从响应 header 中获取重定向 URL。

redirectURL := resp.Header.Get("Location")