<p>рдлреИрд░рд╛рдбреЗ 0.8.X рдФрд░ рдЯрд╛рдЗрдлрд┐рдпрд╕</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рд╕рд┐рддре░ 2012  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдХреНрдпрд╛ рдлреИрд░рд╛рдбреЗ 0.8.X рдЯрд╛рдЗрдлрд┐рдпрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рднреВрд▓ рдЧрдпрд╛ред рдЖрдк рд╢рд╛рдпрдж рдПрдХ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ рдЬреЛ рд╢реВрдиреНрдп рдерд╛, рдФрд░ net_http рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реИред

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рдорд░реНрдерди рдареАрдХ рд╣реИ;)

рд╣рдореНрдо рдореИрдВрдиреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛:

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 рд╢реАрд░реНрд╖рд▓реЗрдЦ рдорд╛рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mokolabs picture mokolabs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

aleksb86 picture aleksb86  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amrrbakry picture amrrbakry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

luizkowalski picture luizkowalski  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

asf-stripe picture asf-stripe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ