cURLを使用したPOSTリクエストの作成
cURL は、リモートサーバー間でデータを転送するためのさまざまなツールを含むパッケージです。 FTP、Windows共有、メールサーバー、そしてもちろんHTTPを使用するWebサーバーをサポートします。
Linuxシェルからのファイルのダウンロードは、通常、 cURLを使用して実行されます。 そのようなコマンド:
curl https://example.org/file.zip --output file.zip
これにより、GETメソッドを使用してファイルがリクエストされ、ダウンロードするだけです。
この記事では、cURLを使用してフォームデータを含むPOSTリクエストを作成する方法について詳しく説明します。これは、サーバーがファイルをダウンロードするために資格情報を必要とする場合、またはデータベースに保存するためにデータをWebフォームに送信する自動スクリプトを作成している場合に役立つことがあります。
また、RESTAPIで使用するためにファイルからXMLまたはJSONデータを送信する方法についても触れます。
cURLを使用したURLエンコードフィールドのPOST
この例では、次のフォームデータを送信します。
フィールド名 | 値 |
---|---|
field1 | value1 |
field2 | value2 |
データはURLhttps://example.org/submit.phpに送信されます 。 example.orgのアドレス 実際には存在しません。これは、例として安全に使用できる単なるWebドメインです。 submit.php はフォーム送信スクリプトの名前の例でもあり、特定のものを参照していません。
フォームデータは、各フォームフィールドとその値が name =value で定義された単一の文字列として、POSTリクエストに渡すことができます。 、およびそれらを&で区切る –dataを使用する オプション:
curl --data "field1=value1&field2=value2" https://example.org/submit.php
ただし、これは理想的ではありません。URLエンコードが必要なためです。 データ–つまり、スペースとスラッシュが特別なコードに置き換えられ、HTTP経由で送信できるようにフォーマットされたデータ。これは手動で行うこともできますが、cURLでは –data-urlencodeを使用して行うことができます。 :
curl --data-urlencode "field1=value1&field2=value2" https://example.org/submit.php
フィールド名はURLエンコードされません。エンコードする場合は、接頭辞として =を付けます。 :
curl --data-urlencode "=user name=Linus Torvalds" https://example.org
–data-urlencodeを使用します 次の例では、 –data 物事を簡単にするためにPOSTリクエストを作成するため。
個別に指定されたURLエンコードフィールド
各フォームフィールドの名前/値は個別に渡すことができます-それは物事をはるかに読みやすくします:
curl --data-urlencode "field1=value1" --data-urlencode "field2=value2" https://example.org/submit.php
cURLを使用したマルチパート/ファイルのアップロード
ファイルを含むマルチパートフォームリクエストは、 –formを使用してPOST経由で送信できます オプション。次の例では、myfile.txtをfileuploadフォームフィールドにアップロードします。
curl --form "[email protected]" https://example.org/submit.php
フィールドとファイル、およびファイル名を含むマルチパート
フォームフィールド名と値のペアは、ファイルのアップロード、およびファイル名に含めることもできます。 アップロードしたファイルを変更したい場合:
curl --form "[email protected];filename=newfilename.txt" --form field1=value1 --form field2=value2 https://example.org/submit.php
データなし
データなしでPOSTリクエストを行うには、空の文字列を渡すだけです:
curl --data-urlencode '' https://example.org/submit.php
ファイルのアップロードの進行状況を表示する
アップロードの進行状況を監視するには、-o出力を追加します プログレスバーを表示するオプション:
curl --tr-encoding -X POST -v -# -o output -T myfile.dat https://example.org/submit.php
ファイルに保存されたデータの送信
すでにファイルに保存されているデータをアップロードする場合は、cURLコマンドに解析するのではなく、すべて一度に送信できます。
curl --data-urlencode [email protected] https://example.org/submit.php
適切なヘッダーを追加することで、JSONおよびXMLデータをプログラムAPIサービスにPOSTできます。
curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:text/xml" curl -X POST --data-urlencode @myfile.txt https://example.org/submit.php --header "Content-Type:application/json"
結論
Linuxコマンドラインで頻繁に作業している場合は、cURLをマスターすることが重要です。プログラマティックAPIとのやり取りや、独自のサーバーとの間でのデータの転送に加えて、通常は完全なWebブラウザーが必要になる可能性のある多くのタスクを実行できます。
ここで他のLinuxシェルとスクリプトの記事をチェックしてください!
-
MySQLデータベースのデータをJavaで更新する方法は?
データをMySQLデータベーステーブルに更新するには、UPDATEコマンドを使用します。構文は次のとおりです- update yourTableName set yourColumnName1 = value1,....N where condition; まず、テーブルを作成する必要があります。クエリは次のとおりです- mysql> create table UpdateDemo -> ( -> id int, -> Name varchar(200) -> ); Query
-
JavaでMySQLデータベースのデータを削除するにはどうすればよいですか?
DELETEコマンドを使用してMySQLデータベースからデータを削除します。構文は次のとおりです。 delete from yourTableName where condition; 私はJAVAプログラミング言語の助けを借りてMySQLデータベースからデータを削除します。まず、テーブルを作成し、いくつかのレコードを挿入します。以下は、テーブルを作成するためのクエリです。 mysql> create table DeleteTableDemo -> ( -> id int, -> Name