<p>Faraday 0.8.X und Typhus</p>

Erstellt am 18. Sept. 2012  ·  11Kommentare  ·  Quelle: lostisland/faraday

Unterstützt faraday 0.8.X den Typhoeus-Client?

Hilfreichster Kommentar

Entschuldigung, dass ich vergessen habe, darauf zu antworten. Sie haben wahrscheinlich einen Header-Wert übergeben, der nil war, und net_http hat versucht, den Header-Wert als String zu verarbeiten.

Um dies zu umgehen, stellen Sie sicher, dass jeder übergebene Header tatsächlich einen Zeichenfolgenwert hat.

Alle 11 Kommentare

Unterstützung OK ;)

Hm ich habe eingestellt:

conn = Faraday.new(url, ssl: {verify: false}) do |builder|
builder.response :follow_redirects, :limit => 3, :standards_compliant => false, :cookie => :all
builder.adapter :typhoeus
Ende

Anfrage gesendet aber mit net_http !
Wie kann ich zu Typhoeus von em_http wechseln?
In 0.7.X hat Typhoeus gut funktioniert.

Ich habe Typhoeus- oder em_http-Adapter eingestellt, aber in Protokollen:
/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 Aufruf'

Server-Antwort mit Status 503, aber net_http-Fehler:
Fehler
undefinierte Methode `strip' für nil:NilClass

Sie initialisieren eine Faraday-Verbindung wie folgt:

conn = Faraday.new(url, ssl: {verify: false}) do |builder|
  builder.response :follow_redirects, :limit => 3, :standards_compliant => false, :cookie => :all
  builder.adapter :typhoeus
end

Es sieht in Ordnung aus. Aber verwenden Sie dieselbe Verbindung, um Anfragen zu stellen? Sie haben uns keinen Code gezeigt, mit dem Sie Anfragen mit Faraday ausführen. Vielleicht verwenden Sie zwei verschiedene Faraday-Verbindungen.

Tipp: Versuchen Sie es mit follow_redirects nur mit Standardoptionen:

builder.response :follow_redirects

Ich sehe im Debug-Modus, dass Objekt-Conn-Adapter typhoeus verwenden, aber in Protokollen sehe ich net_http?! Wieso den?

Ich benutze den nächsten Code:

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

Als nächstes rufe ich das auf:

      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' => '""'})

Ich setze:
conn.response :follow_redirects
und bekomme immer noch Fehler:
Ausnahme
NoMethodError
Fehler
undefinierte Methode `strip' für nil:NilClass

/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'

Es tut uns leid. Es ist mein Fehler.
Ich mache 2 Anfragen und vergesse die zweite Anfrage mit dem Standardadapter.
Bei Typhus tritt dieser Fehler nicht auf.
Aber was tun mit dem net_http-Adapter und dem Fehler: undefinierte Methode `strip' für nil:NilClass ?

Entschuldigung, dass ich vergessen habe, darauf zu antworten. Sie haben wahrscheinlich einen Header-Wert übergeben, der nil war, und net_http hat versucht, den Header-Wert als String zu verarbeiten.

Um dies zu umgehen, stellen Sie sicher, dass jeder übergebene Header tatsächlich einen Zeichenfolgenwert hat.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen