@和&等特殊字符在cURL POST数据中

时间:2012-04-08 03:11:28

标签: post curl

如何添加@和&等特殊字符?在cURL POST数据?我正在尝试传递名称和密码,如:

curl -d name=john passwd=@31&3*J https://www.mysite.com

这会导致问题,因为@用于加载文件,&用于指定多个键/值。有什么方法可以逃脱这些角色吗? \@\&似乎无效。

7 个答案:

答案 0 :(得分:54)

cURL> 7.18.0有一个选项--data-urlencode来解决这个问题。使用它,我只需发送一个POST请求

curl -d name=john --data-urlencode passwd=@31&3*J https://www.mysite.com

答案 1 :(得分:32)

如何使用实体代码......

@ = %40

& = %26

所以,你会:

curl -d 'name=john&passwd=%4031%263*J' https://www.mysite.com

答案 2 :(得分:14)

双引号(“”)整个URL。它有效。

curl "http://www.mysite.com?name=john&passwd=@31&3*J"

答案 3 :(得分:4)

刚发现另一种解决方案适合我。您可以使用' \'在你的特别之前签名。

passwd=\@31\&3*J

答案 4 :(得分:3)

试试这个:

export CURLNAME="john:@31&3*J"
curl -d -u "${CURLNAME}" https://www.example.com

答案 5 :(得分:2)

如果密码中有特殊字符,只需用单引号将密码四舍五入即可。

curl -u username:'this|!Pa&*12' --request POST https://www.example.com

答案 6 :(得分:0)

我做了这个

~]$ export A=g

~]$ export B=!

~]$ export C=nger


   curl http://<>USERNAME<>1:$A$B$C@<>URL<>/<>PATH<>/