cURL POSTデータ内の@や&などの特殊文字 質問する

cURL POSTデータ内の@や&などの特殊文字 質問する

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

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

@これは、ファイルの読み込みや&複数のキー/値の指定に使用されるため、問題が発生します。これらの文字をエスケープする方法はありますか?動作しないようです\@\&

ベストアンサー1

cURL > 7.18.0にはオプションがあります--data-urlencodeこれでこの問題が解決します。これを使用すると、次のようにPOSTリクエストを送信できます。

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

コメントを要約すると、「良い」データと「悪い」データが混在し、その中に感嘆符がある場合は、Windows で次のように使用できます。

curl -d "grant_type=client_credentials&client_id=super-client&acr_values=tenant:TNT123" --data-urlencode "client_secret=XxYyZ21D8E&%fhB6kq^mXQDovSZ%Q*!ipINme" https://login.example.com/connect/token

おすすめ記事