web-dev-qa-db-ja.com

cURLの@や&などの特殊文字POST data

@や&などの特殊文字をcURL POST dataに含めるにはどうすればよいですか?次のような名前とパスワードを渡そうとしています。

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

これにより、@はファイルのロードに使用され、&複数のキー/値を指定します。これらのキャラクターをエスケープする方法はありますか? \@および\&動作しないようです。

46

cURL> 7.18.0にはオプション --data-urlencode この問題を解決します。これを使用して、POSTリクエストを

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

エンティティコードの使用はどうですか...

@ = %40

& = %26

だから、あなたが持っているでしょう:

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

32
Biagio Arobba

URL全体を二重引用符( "")で処理します。

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

別の解決策がうまくいったことがわかりました。特別なものの前に「\」記号を使用できます。

passwd=\@31\&3*J
4
user3650655

これを試して:

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

これは私がしました

~]$ export A=g

~]$ export B=!

~]$ export C=nger


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