今回までで、curlコマンドの解説はひとまず終わろうと思う。最後に、curlを使ってHTTP/HTTPSのPOSTメソッドを利用する例を紹介しよう。

POSTを利用する

HTTP/HTTPSではGETメソッドが使われることが多く、URLにデータを含ませておけばデータを取得できる。一方、ある程度以上の量のデータをアップロードするような用途ではPOSTメソッドが使われる。POSTメソッドでやり取りするデータはURLに含めることができないので、決められた形式に従ってサーバとやり取りしなければならない。そのため、URLを指定してページを取得するようなコマンドでは、GETメソッドは扱えるが、POSTメソッドは扱えないというケースがある。

だが、そうした場合にもcurlコマンドならば対応できるのだ。ここでは例として、日本郵便の公式サイトにある郵便番号検索を取り上げよう。

日本郵便の公式サイトにある郵便番号検索

郵便番号検索機能の動作を調べてみると、次のようにリクエストメソッドにPOSTを使っていることがわかる。

リクエストメソッドにPOSTを使っていることがわかる

特に重要な部分を抜き出すと、次のようになる。

  • URL:http://www.post.japanpost.jp/cgi-zip/zipcode.php
  • メソッド:POST
  • フォームデータ:pref=,addr=千代田区一ツ橋,x=0,y=0

curlコマンドを使うと、こうしたPOSTメソッドを次のように1行で実行できる。

curl -XPOST --data 'pref=&addr=千代田区一ツ橋&x=0&y=0' http://www.post.japanpost.jp/cgi-zip/zipcode.php

「-XPOST」がPOSTリクエストを指定するというオプション、「—data」がデータを指定するオプションだ。「—data」で指定するデータは、「application/x-www-form-urlencoded」として処理されるので、その形式で記述しておく。GETで指定するようなものだと考えておいてもらえればよいだろう。

必要に応じて「—data」ではなく「—data-raw」「—data-binary」「—data-urlencode」などを使ったり、「—form」や「—form-string」を使ったりすることもある。この辺りは、実際に必要になったときにマニュアルを参照すればよいと思う。

curlコマンドを実行して得られる結果を調べてみると、次のようにWebブラウザで検索を実行した際と同じデータが得られることがおわかりいただけるはずだ。

curlコマンドを実行して取得したHTMLコンテンツ

このように、curlを使うと、Webブラウザで操作していた内容をコマンドだけで処理できるようになる。強力かつ扱いやすいので、ぜひ使いこなしていただきたい。