RubyでハッシュをパラメータにしてHTTPリクエストを送信する。
以下の3つのことをまとめて実行するメソッドを書いた。
- Hashからクエリー文字列作成。
- URLのパース。
- Basic認証。
response = http_request("get", "http://www.example.com/search", {:id => 123, :name => "koseki"}, "user", "pass")
みたいにして使う。
require 'net/http' require 'uri' def http_request(method, uri, query_hash = {}, user = nil, pass = nil) uri = URI.parse(uri) if uri.is_a? String method = method.to_s.strip.downcase query_string = (query_hash||{}).map{|k,v| URI.encode(k.to_s) + "=" + URI.encode(v.to_s) }.join("&") if method == "post" args = [Net::HTTP::Post.new(uri.path), query_string] else args = [Net::HTTP::Get.new(uri.path + (query_string.empty? ? "" : "?#{query_string}"))] end args[0].basic_auth(user, pass) if user Net::HTTP.start(uri.host, uri.port) do |http| return http.request(*args) end end
リダイレクトに対応したhttp_request2もgistにあげた。
以下も参照。
- Addressable
複雑なパラメータをクエリー文字列に。
- 404 Not Found
HttpClient