= EM-HTTP-Client 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 Screencast / Demo of using EM-HTTP-Request: - http://everburning.com/news/eventmachine-screencast-em-http-request/ == Simple client example 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 } } == Multi request example 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 } } == Basic-Auth example 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 } } == POST example 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" # ... } == Streaming body processing EventMachine.run { http = EventMachine::HttpRequest.new('http://www.website.com/').get http.stream { |chunk| print chunk } # ... }