рдХреНрдпрд╛ рдлреИрд░рд╛рдбреЗ 0.8.X рдЯрд╛рдЗрдлрд┐рдпрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ?
рд╕рдорд░реНрдерди рдареАрдХ рд╣реИ;)
рд╣рдореНрдо рдореИрдВрдиреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛:
conn = Faraday.new(url, ssl: {verify: false}) do |builder|
Builder.response :follow_redirects, :limit => 3, :standards_compliant => false, :cookie => :all
рдмрд┐рд▓реНрдбрд░.рдПрдбреЗрдкреНрдЯрд░: рдЯрд╛рдЗрдлрд┐рдпрд╕
рд╕рдорд╛рдкреНрдд
рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЧрдпрд╛ рд▓реЗрдХрд┐рди net_http рдХреЗ рд╕рд╛рде!
рдореИрдВ em_http рдХреЗ рдЯрд╛рдЗрдлрд┐рдпрд╕ рдкрд░ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
0.7.X рдореЗрдВ рдЯрд╛рдЗрдлрд┐рдпрд╕ рдиреЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдореЗрд░рд╛ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕:
https://gist.github.com/3743068
рдореИрдВ typhoeus рдпрд╛ em_http рдПрдбреЗрдкреНрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓реЙрдЧ рдореЗрдВ:
/home/johnbat26/.rvm/gems/ruby-1.9. 3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb :54:in new'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb:54:in
create_request'
/home/johnbat26/.rvm/gems/ruby-1.9. 3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb :74:in perform_request'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb:37:in
call'
рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдерд┐рддрд┐ 503 рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ рд▓реЗрдХрд┐рди net_http рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
рддреНрд░реБрдЯрд┐
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ 'рдкрдЯреНрдЯреА'
рдЖрдк рдЗрд╕ рддрд░рд╣ рдПрдХ рдлреИрд░рд╛рдбреЗ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
conn = Faraday.new(url, ssl: {verify: false}) do |builder|
builder.response :follow_redirects, :limit => 3, :standards_compliant => false, :cookie => :all
builder.adapter :typhoeus
end
рдпрд╣ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдЖрдкрдиреЗ рд╣рдореЗрдВ рд╡рд╣ рдХреЛрдб рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдлреИрд░рд╛рдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджреЛ рднрд┐рдиреНрди рдлреИрд░рд╛рдбреЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред
рдпреБрдХреНрддрд┐: рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде follow_redirects рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
builder.response :follow_redirects
рдореИрдВ рдбреАрдмрдЧ рдореЛрдб рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЙрди рдПрдбреЗрдкреНрдЯрд░ рдЯрд╛рдЗрдлрд┐рдпрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЙрдЧ рдореЗрдВ рдореБрдЭреЗ net_http рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ ?! рдХреНрдпреЛрдВ?
рдореИрдВ рдЕрдЧрд▓реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
require 'faraday'
require 'faraday_middleware'
require 'em-http'
require 'typhoeus'
module MediationHelper
# Parameters:
# url = args[:url]
# method = args[:method] || :post
# adapter = args[:adapter] || :net_http
# body = args[:body] || ""
# params = args[:params]
# authentication = args[:auth]
# headers = args[:headers] || {'Content-Type' => 'text/xml; charset=utf-8'}
# timeout = args[:timeout] || 60
# open_timeout = args[:open_timeout] || 60
#
def self.send_http_request(args)
url = args[:url]
method = args[:method] || :post
adapter = args[:adapter] || :net_http
params = args[:params]
body = args[:body] || ""
authentication = args[:auth]
headers = args[:headers] || {'Content-Type' => 'text/xml; charset=utf-8'}
timeout = args[:timeout] || 60
open_timeout = args[:open_timeout] || 60
conn = Faraday.new(url, ssl: {verify: false}) do |conn|
conn.response :follow_redirects
conn.adapter adapter
end
conn.basic_auth(args[:username], args[:password]) if authentication
response = conn.send(method) do |req|
req.headers.update headers
req.body = body
req.params = params if params
req.options = {
:timeout => timeout, # open/read timeout Integer in seconds
:open_timeout => open_timeout, # read timeout Integer in seconds
}
end
response
end
end
рдЗрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕реЗ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ:
response_for_login_request = MediationHelper.send_http_request(:url => url,
:body => login_request_xml,
:adapter => :typhoeus
:headers => {'Content-Type' => "text/xml; charset=utf-8",
'Cookie' => my__cookie,
'SOAPAction' => '""'})
рдореИ рдЯрд┐рдХ рдЧрдпрд╛:
conn.response :follow_redirects
рдФрд░ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рдЕрдкрд╡рд╛рдж
NoMethodError
рддреНрд░реБрдЯрд┐
рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ 'рдкрдЯреНрдЯреА'
/home/johnbat26/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1435:in `block in initialize_http_header'
/home/johnbat26/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1433:in `each'
/home/johnbat26/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1433:in `initialize_http_header'
/home/johnbat26/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1862:in `initialize'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb:54:in `new'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb:54:in `create_request'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb:74:in `perform_request'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/adapter/net_http.rb:37:in `call'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday_middleware-0.8.8/lib/faraday_middleware/response/follow_redirects.rb:76:in `perform_with_redirection'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday_middleware-0.8.8/lib/faraday_middleware/response/follow_redirects.rb:65:in `call'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/connection.rb:226:in `run_request'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/faraday-0.8.4/lib/faraday/connection.rb:99:in `post'
/home/coding/projects/idea_projects/tsp-bwks-mediation/app/helpers/mediation_helper.rb:50:in `send_http_request'
/home/coding/projects/idea_projects/tsp-bwks-mediation/app/helpers/broadworks_helper.rb:81:in `authenticate'
/home/coding/projects/idea_projects/tsp-bwks-mediation/app/helpers/broadworks_helper.rb:121:in `init_broadworks_session'
/home/coding/projects/idea_projects/tsp-bwks-mediation/app/jobs/webex_requests_job.rb:24:in `block in perform'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:239:in `block in each'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:238:in `upto'
/home/johnbat26/.rvm/gems/ruby-1.9.3-p194@webex/gems/nokogiri-1.5.5/lib/nokogiri/xml/node_set.rb:238:in `each'
/home/coding/projects/idea_projects/tsp-bwks-mediation/app/jobs/webex_requests_job.rb:18:in `perform'
рдорд╛рдлрд╝ рдХрд░рдирд╛ред рдпрд╣ рдореЗрд░реА рдЧрд▓рддреА рд╣реИред
рдореИрдВ 2 рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВред
рдЯрд╛рдЗрдлрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рд▓реЗрдХрд┐рди net_http рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐: рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐ 'рд╕реНрдЯреНрд░рд┐рдк'
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдЖрдк рд╢рд╛рдпрдж рдПрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ рдЬреЛ рд╢реВрдиреНрдп рдерд╛, рдФрд░ net_http рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдЖрдк рд╢рд╛рдпрдж рдПрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ рдЬреЛ рд╢реВрдиреНрдп рдерд╛, рдФрд░ net_http рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реИред