<p>faraday 0.8.X والتيفويوس</p>

تم إنشاؤها على ١٨ سبتمبر ٢٠١٢  ·  11تعليقات  ·  مصدر: lostisland/faraday

هل يدعم faraday 0.8.X عميل Typhoeus؟

التعليق الأكثر فائدة

آسف نسيت الرد على هذا. من المحتمل أنك قمت بتمرير قيمة رأس كانت لا شيء ، وكان net_http يحاول معالجة قيمة الرأس كسلسلة.

لحل هذه المشكلة ، تأكد من أن أي رأس تقوم بتمريره يحتوي بالفعل على قيمة سلسلة.

ال 11 كومينتر

دعم موافق؛)

هممم أضع:

conn = Faraday.new (url، ssl: {تحقق: خطأ}) do | builder |
builder.response: follow_redirects،: limit => 3،: Standards_compliant => false،: cookie =>: all
builder.adapter: typhoeus
نهاية

تم إرسال الطلب ولكن مع net_http!
كيف يمكنني التبديل إلى Typhoeus من 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: في 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: في 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:
خطأ
طريقة غير محددة "strip" لعدم وجود : NilClass

أنت تقوم بتهيئة اتصال Faraday مثل هذا:

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

يبدو على ما يرام. لكن هل تستخدم نفس الاتصال لتقديم الطلبات؟ لم تُظهر لنا الكود الذي تستخدمه في تنفيذ الطلبات باستخدام فاراداي. ربما كنت تستخدم اتصالين مختلفين من Faraday.

نصيحة: حاول استخدام follow_redirects مع الخيارات الافتراضية فقط:

builder.response :follow_redirects

أرى في وضع التصحيح أن الكائن يستخدم typhoeus المحول ، لكن في السجلات أرى 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
خطأ
طريقة غير محددة "strip" لعدم وجود : 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'

آسف. انه خطأي.
أفعل 2 طلب ، ونسيان الطلب الثاني مع المحول الافتراضي.
مع typhoeus ، لا يظهر هذا الخطأ.
ولكن ماذا تفعل بمحول net_http وهو خطأ: أسلوب غير محدد "قطاع" لـ nil: NilClass ؟

آسف نسيت الرد على هذا. من المحتمل أنك قمت بتمرير قيمة رأس كانت لا شيء ، وكان net_http يحاول معالجة قيمة الرأس كسلسلة.

لحل هذه المشكلة ، تأكد من أن أي رأس تقوم بتمريره يحتوي بالفعل على قيمة سلسلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

t3hk0d3 picture t3hk0d3  ·  3تعليقات

subvertallchris picture subvertallchris  ·  5تعليقات

aleksb86 picture aleksb86  ·  3تعليقات

Lewiscowles1986 picture Lewiscowles1986  ·  4تعليقات

jedeleh picture jedeleh  ·  3تعليقات