EventMachine based HTTP Request interface. Supports streaming response processing, uses Ragel HTTP parser.
-
Simple interface for single & parallel requests via deferred callbacks
-
Automatic gzip & deflate decoding
-
Basic-Auth support
-
Custom timeouts
EventMachine.run { http = EventMachine::HttpRequest.new('http://127.0.0.1/').get :query => {'keyname' => 'value'}, :timeout => 10 http.callback { p http.response_header.status p http.response_header p http.response EventMachine.stop } }
EventMachine.run { multi = EventMachine::MultiRequest.new # add multiple requests to the multi-handler multi.add(EventMachine::HttpRequest.new('http://www.google.com/').get) multi.add(EventMachine::HttpRequest.new('http://www.yahoo.com/').get) multi.callback { p multi.responses[:succeeded] p multi.responses[:failed] EventMachine.stop } }
EventMachine.run { http = EventMachine::HttpRequest.new('http://www.website.com/').get :head => {'authorization' => ['user', 'pass']} http.errback { failed } http.callback { p http.response_header EventMachine.stop } }
EventMachine.run { http1 = EventMachine::HttpRequest.new('http://www.website.com/').post :body => {"key1" => 1, "key2" => [2,3]} http2 = EventMachine::HttpRequest.new('http://www.website.com/').post :body => "some data" # ... }
EventMachine.run { body = '' on_body = lambda { |chunk| body += chunk } http = EventMachine::HttpRequest.new('http://www.website.com/').get :on_response => on_body # ... }