如何在http get中将多个字符串传递给一个url?

Posted

技术标签:

【中文标题】如何在http get中将多个字符串传递给一个url?【英文标题】:How to pass multiple strings into a url in http get? 【发布时间】:2019-01-27 21:14:48 【问题描述】:

这是我当前的代码:

var dek string = "dk"
resp,err := c.Get("https://google."VALUEHERE"")

如果我需要一堆不同的字符串,我希望能够将不同的字符串传递到我的网址中。

理想情况下应该是这样的:

resp,err := c.Get("https://google.dk/value1=%v&value2=%v", value1, value2)

这有可能吗?

【问题讨论】:

使用fmt.Sprintf:golang.org/pkg/fmt 宁可使用 url.URLurl.Values 以便正确地对值进行 URL 转义。 你试过什么?显示您当前的代码(您现在显示的示例代码无效,甚至无法编译),并说明您面临的问题。 @Flimzy 是的代码不起作用我只是想说明我需要什么,我想通了,但感谢您的回复! 【参考方案1】:

使用fmt.Sprintf(...) 构建不需要编码的字符串:

hostname := fmt.Sprintf("google.%s", "dk")
// => "google.dk"

使用 net/url package 构建 URL,以便正确编码:

u := &url.URLScheme: "https", Host: hostname
fmt.Println(u)
// => https://google.dk

q := u.Query()
q.Add("value1", "foo")
q.Add("value2", "Hello, World!")
u.RawQuery = q.Encode()
fmt.Println(u)
// => https://google.dk?value1=foo&value2=Hello%2C+World%21

resp, err := c.Get(u.String())
// ...

【讨论】:

完美,正是我所需要的。非常感谢! @k0ngoz 不客气!如果它解决了您的问题,您可以投票和/或接受此答案。

以上是关于如何在http get中将多个字符串传递给一个url?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GET 方法中为 Spring Boot 控制器类传递多个路径变量?

如何在 React 中将不同的道具从父组件传递给多个子组件?

如何在 mongodb 聚合中将动态字符串传递给 $regex

如何在 laravel 5.8 中将变量传递给路由?

如何在 Python 2 中将字符串传递给 subprocess.Popen? [复制]

如何在 EF6 中将连接字符串传递给 DataContext