フィールドあり:
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 "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
データなし:
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 チュートリアル ](http://curl.haxx.se/docs/httpscripting.html) が役に立ちます。
libcurl では、通常の方法でフォームを送信する前に curl_formadd()
関数を使用してフォームを構築してください。詳細については libcurl documentation を参照してください。
大きなファイルの場合、アップロードの進捗状況を表示するためのパラメータを追加することを検討してください:
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
という名前のファイルの内容を読み込んで、ポストリクエストとして送信します。
標準入力に -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 Example Manual に記載されている例です。
サイトにログインしたい場合は、次のようにしてください:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
最初のリクエストでは、セッションクッキー(ログイン成功時に提供される)が “ヘッダー "ファイルに保存されます。今後は、ブラウザでログインした後に通常アクセスするウェブサイトの任意の部分で認証するために、そのクッキーを使用することができます。
curl -v --data-ascii var=value http://example.com
とより多くのオプションがありますが、詳細については curl --help
をチェックしてください。
怠け者の方は、google-chromeやfirefoxにすべての作業を代行してもらうこともできます。提出したいフォームを右クリックして Inspect (Firefox の場合は Inspect Element) を選択します。これにより、DevTools パネルが開きます。2. devtools の Network タブを選択し、Preserve log チェックボックス (Firefox の場合は Persist Logs) にチェックを入れます。フォームを送信し、POSTメソッドを持つエントリを探します(任意のカラムヘッダを右クリックし、Methodがチェックされていることを確認してください)。POSTの行を右クリックし、Copy > Copy as cURLを選択します。
ChromeはcURL構文ですべてのリクエストデータをコピーします。
これは--data 'param1=hello¶m2=world'
としてPOSTされます(ファイルのアップロードを含まないフォームの大部分で使用されます)。
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
-d
としてPOSTされます(典型的には、ファイルアップロードを含むフォームで使用され、フィールドの順序が重要であるか、または同じ名前の複数のフィールドが必要とされる場所):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
-F
ヘッダーは通常必要ありませんが、私は念のためにそれを投げました。カスタムエージェントが必要な場合は、例えばapplication/x-www-form-urlencoded
を含むmultipart/form-data
ファイルを作成することで、すべてのリクエストでそれを設定することを避けることができます。