类别:将URL作为GET参数传递

阿卜杜勒(Abdel):

我想获取一个URL作为获取参数

例如:example.com?domain = site.come?a = val&b = val

我使用时的问题

query := r.URL.Query()
domain := query.Get("domain") 

获得域名,它只提供domain = site.come?a = val

我想是因为当r.URL.Query()符合它认为这是一个新的参数

有谁知道我该如何解决这个问题

先感谢您。

您需要对查询字符串进行URL编码,如下所示

package main

import (
    "fmt"
    "net/url"
)

func main() {
    query := make(url.Values)
    query.Add("domain", "example.com?foo=bar")

    fmt.Println(query.Encode())
}

哪个输出domain=example.com%3Ffoo%3Dbar

您可以设置该字符串作为RawQuery一个的url.URL值,如果你再访问查询像你这样,就会有正确的值。

如果URL编码正确,那么您应该能够使用URL值运行以下代码并获得正确的结果:

package main

import (
    "fmt"
    "net/url"
)

func main() {
    query := make(url.Values)
    query.Add("domain", "example.com?foo=bar&abc=123&jkl=qwe")

    url := &url.URL{RawQuery: query.Encode(), Host: "domain.com", Scheme: "http"}
    fmt.Println(url.String())

    abc := url.Query().Get("domain")
    fmt.Println(abc)
}

打印:

http://domain.com?domain=example.com%3Ffoo%3Dbar%26abc%3D123%26jkl%3Dqwe

(带有编码参数“ domain”的完整URI)

example.com?foo=bar&abc=123&jkl=qwe

(所述参数的解码值)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章