curlでデータをHTTP POSTする方法とアンパサンド(&)のエスケープについて

    >

curlのフォームデータのPOSTには、2つのオプションが使用できます。

fとdです。
これの違いは、fは一つのキーしか送れませんが、dは複数のパラメータを送ることができます。

curl https://yuis.xsrv.jp/pg/dev/ -X POST -f 'html=hogehogehoge' #=> Ok
curl https://yuis.xsrv.jp/pg/dev/ -X POST -f 'html=hogehogehoge&fuga=fugafuga' #=> Error
curl https://yuis.xsrv.jp/pg/dev/ -X POST -d 'html=hogehogehoge' #=> Ok
curl https://yuis.xsrv.jp/pg/dev/ -X POST -d 'html=hogehogehoge&fuga=fugafuga' #=> Ok

また、”&”をデータの中に含んでいると、&以降が別のキーだと認識されるため、エスケープの必要があります。

curl https://yuis.xsrv.jp/pg/dev/ -X POST -d 'html=hogehogehoge&fugafugafuga'

こうするればエスケープと同時にcurlすることができます。

curl https://yuis.xsrv.jp/pg/dev/ -X POST --data-urlencode 'html=hogehogehoge&fugafugafuga'

複数パラメーターを指定したい場合はオプションを複数指定します。

curl https://yuis.xsrv.jp/pg/dev/ -X POST --data-urlencode 'html=hogehogehoge&fugafugafuga'  --data-urlencode 'hoge=hoge'

もしくは、こちらのスクリプトを使用します。
Bash urlencode and urldecode

urlencode 'hogehogehoge&fugafugafuga'
hogehogehoge%26fugafugafuga

curl https://yuis.xsrv.jp/pg/dev/ -X POST -d 'html=hogehogehoge%26fugafugafuga'

お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


関連するかもしれない記事

Bashで!(エクスクラメーション)をエスケープするには
JavaScriptでURLエスケープ
Telegram APIでUbuntu BashからcurlコマンドでTelegramにメッセージを送信する
curlでプロキシサーバーを経由する
PHPでHTTP POSTリクエストを受け取る


Close Menu