我试图在Go中使用HTTP . get (url)发出HTTP请求,我想在浏览器中打开响应。我正在使用browser. openurl()来启动系统浏览器,但是我不知道如何获得响应url。
在Python中,使用requests库,它是响应对象的一个属性。我可以在浏览器中获取并打开它(使用浏览器库),如下所示:
response = requests.get(endpoint)
browser.open(response.url)
我怎么能做到这一点使用http/net库在Go?响应对象是一个不包含该属性的结构体。
我正在尝试调用Spotify API来验证应用程序,这需要打开浏览器窗口供用户输入。到目前为止,我得到了这个:
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
直接从响应头中获取重定向URL。
redirectURL := resp.Header.Get("Location")