http – POST リクエストを行うための cURL コマンドライン構文は何ですか?

curl http

POSTリクエストをコマンドラインツールcURLで作成するにはどうすればいいですか?

  2310  None  2008-09-17


ベストアンサー

With fields:

curl --data "param1=value1&param2=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に全部やってもらえばいい

  1. 送信するフォームを右クリックして、[検査](Firefoxの場合は[要素の検査])を選択します。これにより、DevToolsパネルが開きます
  2. devtoolsでNetworkタブを選択し、Preserve logチェックボックス(Persist Logs for firefox)にチェックを入れます
  3. フォームを送信し、POSTメソッドを使用してエントリを探します(任意のカラムヘッダを右クリックし、メソッドがチェックされていることを確認してください)
  4. POSTと書かれた行を右クリックし、「コピー」>「cURLとしてコピー」を選択します

chrome devtools: copy as cURL

ChromeはすべてのリクエストデータをcURL構文でコピーします

Chrome は --data 'param1=hello&param2=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


タイトルとURLをコピーしました