フィールドを使って:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
フィールドを個別に指定した場合
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
マルチパート:
curl --form "[email protected]" https://example.com/resource.cgi
フィールドとファイル名を含むマルチパート:
curl --form "[email protected];filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
データなし
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
詳しくは cURLのマニュアル を参照してください。 Webブラウザをエミュレートする cURLチュートリアル が役立ちます。
Libcurlでは、通常の方法でフォームを送信する前に、curl_formadd()
関数を使用してフォームを作成します。詳しくは libcurlの資料 を参照してください。
大きなファイルの場合は、アップロードの進行状況を表示するためのパラメータを追加することを検討してください。
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
-o output
は必須で、そうでなければ進行状況バーは表示されません。
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
という名前のファイルの内容を読み込み、それをpostリクエストとして送信します。
-d @-
を持つ標準入力からのデータ
例:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
出力:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
Curlサンプルマニュアル にある例です。
上記の方法でうまくいかない場合でも、アンパーサンドに%26を使用してください。
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
サイトにログインしたい場合は、次の手順に従ってください。
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
最初のリクエストはセッションクッキー(ログイン成功時に提供されたもの)を "headers"ファイルに保存します。今後は、そのクッキーを使用して、ブラウザでログインした後に通常アクセスするWebサイトの任意の部分に対してユーザーを認証できます。
curl -v --data-ascii var=value http://example.com
そして、もっとたくさんのオプションがあります。詳細についてはcurl --help
をチェックしてください。
怠け者の場合は、google-chromeを入手してすべての作業を行うことができます。
ChromeはすべてのリクエストデータをcURL構文でコピーします。
Chromeは--data 'param1=hello¶m2=world'
を使用します。これは、送信するPOSTリクエストのタイプに応じて、パラメーターごとに単一の-d
または-F
を使用して読みやすくすることができます。 application/x-www-form-urlencoded
またはmultipart/form-data
のいずれかになります。
これは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
ヘッダーは通常必要ありませんが、万が一の場合に備えてスローしています。 ~/.curlrc
ファイルを作成することで、リクエストごとにユーザーエージェントを設定する必要がなくなります。 User-Agent: "Mozilla/2.2"