当post param中有空格时,如何发出POST请求?例如。在bash我会这样做:
curl -X POST "https://website.com/api" --data-urlencode "key=$SSHKey" <- "ssh-rsa abcde abc@abc.com"
我使用http.NewRequest方法发送POST请求。 http://golang.org/pkg/net/http/#NewRequest
reqURL := fmt.Sprintf("https://website.com/api?key=%s", "ssh-rsa abcde abc@abc.com")
client := &http.Client{}
r, _ := http.NewRequest("POST", reqURL, nil)
client.Do(r)
答案 0 :(得分:2)
您应该使用url.QueryEscape
。
reqURL := fmt.Sprintf("https://website.com/api?key=%s",
url.QueryEscape("ssh-rsa abcde abc@abc.com"))
// https://website.com/api?key=ssh-rsa+abcde+abc%40abc.com
另请注意,您正在讨论POST参数,但实际上是在设置GET url参数。
答案 1 :(得分:2)
您可以使用net.url.Values.Encode
对参数进行URL编码:
package main
import "fmt"
import "net/url"
func main() {
values := url.Values{}
values.Set("key", "foo bar baz")
fmt.Println(values.Encode())
}
输出:
key=foo+bar+baz
答案 2 :(得分:0)
在许多语言中,您使用%20
或+
等内容对空间进行编码。我建议你尝试简单的string替换。例如:
strings.Replace(params, " ", "%20", -1)