英文:
POST params with spaces in it
问题
如何在 post 参数中包含空格时进行 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)
请注意,以上代码是使用 Golang 编写的。
英文:
How do I make a POST request when the post param has spaces in it? Eg. in bash I would do this:
curl -X POST "https://website.com/api" --data-urlencode "key=$SSHKey" <- "ssh-rsa abcde abc@abc.com"
I'm using the http.NewRequest method to send POST requests. 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)
答案1
得分: 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参数。
英文:
You should use 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
Also note that you are talking of POST parameters but you are actually setting GET url parameters.
答案2
得分: 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
你可以参考这里了解更多关于net.url.Values.Encode
的信息。
英文:
You could URL encode the parameter using net.url.Values.Encode
:
package main
import "fmt"
import "net/url"
func main() {
values := url.Values{}
values.Set("key", "foo bar baz")
fmt.Println(values.Encode())
}
Output:
key=foo+bar+baz
答案3
得分: 0
在许多语言中,你可以使用类似 %20
或 +
的方式来编码空格。我建议你尝试简单的字符串替换。例如:
strings.Replace(params, " ", "%20", -1)
英文:
In a lot of languages you encode space with something like %20
or +
. I would suggest you to try simple string replacement. For example:
strings.Replace(params, " ", "%20", -1)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论