POSTリクエストをコマンドラインツールcURLで作成するにはどうすればいいですか?
2310 None 2008-09-17
With fields:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
個別に指定されたフィールドを持つ
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
Multipart:
curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi
フィールドとファイル名を持つマルチパート
curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
Without data:
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
詳細は cURL マニュアル を参照してください。ウェブブラウザのエミュレートに関するcURLチュートリアルが参考になります
libcurl では、通常の方法でフォームを送信する前に curl_formadd()
関数を使用してフォームをビルドします。詳細は libcurl ドキュメント を参照してください
大きなファイルの場合は、アップロードの進捗状況を表示するためのパラメータを追加することを検討してください
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
Example Domain
-o output
は必須で、そうでなければプログレスバーは表示されません
2693 Stephen Deken 2008-09-17
XML を含む RESTful HTTP POST の場合
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"
またはJSONの場合は、これを使用します
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"
これは、filename.txt
という名前のファイルの内容を読み込んで、ポストリクエストとして送信します
529 soundmonster 2011-03-10
stdinから-d @-
でデータを取得します
Example:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Output:
<p>Hello <strong>world</strong>!</p>
147 Ciro Santilli 郝海东冠状病六四事件法轮功 2014-03-25
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
は、Curl Example Manual に記載されている例です
上記がうまくいかない場合は、アンパサンドに %26 を使用してください
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
71 Patrick Desjardins 2008-09-17
サイトにログインする場合は以下のようにします
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
最初のリクエストでは、セッションクッキー(ログイン成功時に提供される)が「ヘッダー」ファイルに保存されます。今後は、ブラウザでログインした後に通常アクセスするウェブサイトのどの部分でも、そのクッキーを使用して認証することができます
64 Martin Konecny 2012-03-04
怠け者ならgoogle-chromeやfirefoxに全部やってもらえばいい
- 送信するフォームを右クリックして、[検査](Firefoxの場合は[要素の検査])を選択します。これにより、DevToolsパネルが開きます
- devtoolsでNetworkタブを選択し、Preserve logチェックボックス(Persist Logs for firefox)にチェックを入れます
- フォームを送信し、POSTメソッドを使用してエントリを探します(任意のカラムヘッダを右クリックし、メソッドがチェックされていることを確認してください)
- POSTと書かれた行を右クリックし、「コピー」>「cURLとしてコピー」を選択します
ChromeはすべてのリクエストデータをcURL構文でコピーします
Chrome は --data 'param1=hello¶m2=world'
を使用していますが、送信したい POST リクエストのタイプに応じてパラメータごとに -d
または -F
を使用することで、より読みやすくすることができます
これはapplication/x-www-form-urlencoded
としてPOSTされます(ファイルのアップロードを含まないフォームの大半で使用されます)
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
multipart/form-data
POSTには-F
を使用します (通常、ファイルのアップロードを含むフォームや、フィールドの順番が重要な場合、あるいは同じ名前の複数のフィールドが必要な場合に使用されます)
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
User-Agent
ヘッダは通常は必要ありませんが、念のため入れておきました。カスタムエージェントが必要な場合は、例えば User-Agent: "Mozilla/2.2"
を含む ~/.curlrc
ファイルを作成することで、リクエストごとにエージェントを設定する必要がなくなります
38 ccpizza 2017-09-29
curl -v --data-ascii var=value http://example.com
と、他にもたくさんのオプションがありますので、curl --help
をチェックしてみてください
36 Vinko Vrsalovic 2008-09-17