<p>faraday 0.8.X et typhée</p>

Créé le 18 sept. 2012  ·  11Commentaires  ·  Source: lostisland/faraday

Faraday 0.8.X prend-il en charge le client typhous ?

Commentaire le plus utile

Désolé j'ai oublié de répondre à ça. Vous passiez probablement une valeur d'en-tête nulle et net_http essayait de traiter la valeur d'en-tête comme une chaîne.

Pour contourner ce problème, assurez-vous que tout en-tête que vous transmettez a réellement une valeur de chaîne.

Tous les 11 commentaires

soutien OK ;)

Hum j'ai mis :

conn = Faraday.new(url, ssl : {vérifier : false}) faire |builder|
builder.response :follow_redirects, :limit => 3, :standards_compliance => false, :cookie => :all
builder.adapter : typhée
finir

Requête envoyée mais avec net_http !
Comment puis-je passer au typhée de em_http ?
En 0.7.X, le typhée a bien fonctionné.

Ma trace de pile :
https://gist.github.com/3743068

J'ai défini l'adaptateur typhoeus ou em_http, mais dans les journaux :
/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'

le serveur obtient une réponse avec le statut 503 mais net_http obtient une erreur :
Erreur
méthode non définie 'strip' pour nil:NilClass

Vous initialisez une connexion Faraday comme ceci :

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

Ça a l'air OK. Mais utilisez-vous la même connexion pour faire des demandes ? Vous ne nous avez pas montré le code avec lequel vous effectuez des requêtes en utilisant Faraday. Peut-être que vous utilisez deux connexions Faraday différentes.

Astuce : essayez d'utiliser follow_redirects avec uniquement les options par défaut :

builder.response :follow_redirects

Je vois en mode débogage que l'objet conn utilise l'adaptateur typhoeus, mais dans les journaux, je vois net_http ?! Pourquoi?

J'utilise le code suivant :

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

ensuite j'invoque ceci:

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

j'ai mis :
conn.response : follow_redirects
et obtenez toujours l'erreur:
Exception
NoMethodError
Erreur
méthode non définie 'strip' pour 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'

Désolé. C'est mon erreur.
Je fais 2 demandes et oublie la deuxième demande avec l'adaptateur par défaut.
Avec typhoeus cette erreur n'apparaît pas.
Mais que faire avec l'adaptateur net_http et son erreur : méthode non définie 'strip' pour nil:NilClass ?

Désolé j'ai oublié de répondre à ça. Vous passiez probablement une valeur d'en-tête nulle et net_http essayait de traiter la valeur d'en-tête comme une chaîne.

Pour contourner ce problème, assurez-vous que tout en-tête que vous transmettez a réellement une valeur de chaîne.

Cette page vous a été utile?
0 / 5 - 0 notes