サーバ: Apache 2.2.17
OS: Mac OS X 10.5.6
ブラウザじゃなくて、スクリプトでGETのHTTPリクエスト送るときってあります。
そんな場合のRubyでのやり方です。
やり方はいろいろあるようなのですが、わかりやすいと思われる方法を紹介します。
以下サンプルスクリプトです。
[クライアント側のスクリプト]
#!/usr/bin/ruby
require 'net/http'
request = Net::HTTP::Get.new('/ruby_response.php?key1=100&key2=200')
response = Net::HTTP.start('localhost', 80) {|http|
http.request(request)
}
puts response
なんとなく雰囲気は掴めると思います。require 'net/http'
request = Net::HTTP::Get.new('/ruby_response.php?key1=100&key2=200')
response = Net::HTTP.start('localhost', 80) {|http|
http.request(request)
}
puts response
Net::HTTP::Getクラスのnewメソッドでリクエストを生成しています。この引数にはドメイン名以下のパスを指定します。GETリクエストの場合、リクエストパラメータもここに含めることができます。
Net::HTTPのstartメソッドで通信します。リクエスト送信はブロック内で行います。requestメソッドです。
このブロックはブロックの値を返すので、レスポンスがそのまま取得できます。
最後にレスポンスを表示しています。
[サーバ側のスクリプト]
<?php var_dump($_GET); ?>
GETパラメータをダンプして表示しています。[実行結果]
#<Net::HTTPOK:0x44124>
array(2) {
["key1"]=>
string(3) "100"
["key2"]=>
string(3) "200"
}
成功すると、Net::HTTPOKオブジェクトが返ります。いわゆる200 OK ってやつですね。array(2) {
["key1"]=>
string(3) "100"
["key2"]=>
string(3) "200"
}
GETパラメータもしっかり渡されていることが判ります。