curlコマンドの基本的な使い方を説明していきます。
その前にブラウザとウェブサーバーとの間で通信されるHTTPメッセージについて簡単に整理しておきます。
HTTPプロトコルにおいて、サーバーに対してリクエストメッセージを送ると、サーバーからレスポンスメッセージが返ってきます。それぞれのメッセージは大きく分けて下図のように構成されています。
GETメソッド
curlコマンドでGETメソッドによるリクエスト送信をおこないます。
下記コマンドではレスポンスメッセージのボディのみが表示されます。
1 |
curl https://www.google.com |
ステータスラインとヘッダのみを表示させるには「-I」オプションを指定します。
1 |
curl -I https://www.google.com |
すべてのレスポンスメッセージを表示させるには「-i」オプションを指定します。
1 |
curl -i https://www.google.com |
POSTメソッド
curlコマンドでPOSTメソッドによるリクエスト送信をおこなうには「-X POST」(-X メソッド)を指定し、「-d」オプションで実際に送信するキーとバリューを設定します。
1 |
curl -X POST https://noumenon-th.net/programming/sample/php/test-post.php -d 'word1=hello&word2=world' |
上記コマンドを打つと実際に下記のようなレスポンスボディが返ってきます。
1 |
helloとworldを入力しました。 |
test-post.phpのコードは下記のように記述してあります。
1 2 3 4 5 6 |
<?php $word1 = htmlspecialchars($_POST['word1'], ENT_QUOTES, 'UTF-8'); $word2 = htmlspecialchars($_POST['word2'], ENT_QUOTES, 'UTF-8'); echo "{$word1}と{$word2}を入力しました。"; |
JSONデータをPOSTする場合は「-H ‘Content-Type:application/json’」と「-d」オプションと実際に送信するJSONデータを設定します。
1 |
curl -H 'Content-Type:application/json' -X POST https://noumenon-th.net/javascript-stuty/json.php -d '{"word1":"hello","word2":"world"}' |
上記コマンドを打つと実際に下記のようなレスポンスボディが返ってきます。
1 |
world |
json.phpのコードは下記のように記述してあります。
1 2 3 4 5 6 |
<?php $json_string = file_get_contents('php://input'); $obj = json_decode($json_string); echo $obj->word2; |
クッキー(Cookie)
クッキーを利用してcurlコマンドを打つ場合は「-c」オプションを利用します。
下記コマンドでは、実際に同ディレクトリにcookie.txtが生成され、cookie1.phpによって生成されたクッキーの内容が保持されます。
1 |
curl -c cookie.txt https://noumenon-th.net/programming/sample/php/cookie1.php |
このcookie.txtを利用する場合は「-b」オプションを利用します。上記コマンドを打った後、10秒以内に下記コマンドを打ってみて下さい。
1 |
curl -b cookie.txt https://noumenon-th.net/programming/sample/php/cookie2.php |
cookie1.phpではクッキーは10秒のみクライアント側にデータを保持するよう記述されているので、上記コマンドを10秒以内に打てば「クッキーを保存しました」というメッセージが確認できます。10秒過ぎてコマンドを打つと「クッキーは削除されています。」というメッセージが表示されます。
cookie1.phpおよびcookie2.phpについての詳細は下記のページをご参照下さい。