2008-09-17 15:39:01 +0000 2008-09-17 15:39:01 +0000
2240
2240

POSTリクエストを行うためのcURLコマンドライン構文を教えてください。

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

回答 (7)

2607
2607
2607
2008-09-17 15:43:28 +0000

フィールドあり:

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 が必要です。

517
517
517
2011-03-10 08:29:31 +0000

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という名前のファイルの内容を読み込んで、ポストリクエストとして送信します。

137
137
137
2014-03-25 19:35:44 +0000

標準入力に -d @-

を指定した場合のデータ 例:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

出力:

<p>Hello <strong>world</strong>!</p>
69
69
69
2008-09-17 15:42:15 +0000
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi

は、 Curl Example Manual に記載されている例です。

63
63
63
2012-03-04 02:21:37 +0000

サイトにログインしたい場合は、次のようにしてください:

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

最初のリクエストでは、セッションクッキー(ログイン成功時に提供される)が “ヘッダー "ファイルに保存されます。今後は、ブラウザでログインした後に通常アクセスするウェブサイトの任意の部分で認証するために、そのクッキーを使用することができます。

35
35
35
2008-09-17 15:43:02 +0000
curl -v --data-ascii var=value http://example.com

とより多くのオプションがありますが、詳細については curl --help をチェックしてください。

33
33
33
2017-09-29 08:06:57 +0000

怠け者の方は、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&param2=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ファイルを作成することで、すべてのリクエストでそれを設定することを避けることができます。

関連する質問

16
19
15
9
10