gpt4 book ai didi

go - 不能在 http.Get 的参数中使用 baseURL(类型 *url.URL)作为类型字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:25:26 25 4
gpt4 key购买 nike

我编写了一个简单的 Web 服务器,它使用 url.ResolveReference 将一些相对路径附加到基本 URL。然后我想使用 http.Get() 获取结果 URL 的内容,但问题是 http.get() 将字符串作为参数,我有一个类型为 *url.URL 的对象。如何解决这个问题?

我的代码如下:

package main

import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
)

func factHandler(w http.ResponseWriter, r *http.Request) {
str1 := "http://www.meaningfultype.com/"
u1, _ := url.Parse(str1)
str2 := "/clarendon.html"
u2, _ := url.Parse(str2)
u3 := u1.ResolveReference(u2)
fmt.Println("url:", u3)
res, err := http.Get(u3)
if err != nil {
log.Fatal(err)
}
robots, err := ioutil.ReadAll(res.Body)

res.Body.Close()
if err != nil {
log.Fatal(err)
}
contentType := res.Header.Get("Content-Type")
w.Header().Set("Content-Type", contentType)
w.Write(robots)
}

最佳答案

调用u3的String()方法,将返回的字符串传递给http.Get():

package main

import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
)

func factHandler(w http.ResponseWriter, r *http.Request) {
str1 := "http://www.meaningfultype.com/"
u1, _ := url.Parse(str1)
str2 := "/clarendon.html"
u2, _ := url.Parse(str2)
u3 := u1.ResolveReference(u2)
fmt.Println("url:", u3)
res, err := http.Get(u3.String()) // Change this line
if err != nil {
log.Fatal(err)
}
robots, err := ioutil.ReadAll(res.Body)

res.Body.Close()
if err != nil {
log.Fatal(err)
}
contentType := res.Header.Get("Content-Type")
w.Header().Set("Content-Type", contentType)
w.Write(robots)
}

关于go - 不能在 http.Get 的参数中使用 baseURL(类型 *url.URL)作为类型字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43326613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com