BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

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 "admin@wsxdn.com" https://example.org/submit.php

フィールドとファイル、およびファイル名を含むマルチパート

フォームフィールド名と値のペアは、ファイルのアップロード、およびファイル名に含めることもできます。 アップロードしたファイルを変更したい場合:

curl --form "admin@wsxdn.com;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 admin@wsxdn.com 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シェルとスクリプトの記事をチェックしてください!


  1. MySQLデータベースのデータをJavaで更新する方法は?

    データをMySQLデータベーステーブルに更新するには、UPDATEコマンドを使用します。構文は次のとおりです- update yourTableName set yourColumnName1 = value1,....N where condition; まず、テーブルを作成する必要があります。クエリは次のとおりです- mysql> create table UpdateDemo    -> (    -> id int,    -> Name varchar(200) -> ); Query

  2. JavaでMySQLデータベースのデータを削除するにはどうすればよいですか?

    DELETEコマンドを使用してMySQLデータベースからデータを削除します。構文は次のとおりです。 delete from yourTableName where condition; 私はJAVAプログラミング言語の助けを借りてMySQLデータベースからデータを削除します。まず、テーブルを作成し、いくつかのレコードを挿入します。以下は、テーブルを作成するためのクエリです。 mysql> create table DeleteTableDemo    -> (    -> id int,    -> Name