【发布时间】:2014-04-24 00:05:42
【问题描述】:
我想设置 faraday 使用 multi_xml 并默认解析我的响应正文。
@connection = Faraday.new(base_url) {|builder| builder.response :xml, content_type: /xml/}
导致:
NoMethodError: undefined method `[]' for nil:NilClass
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:59:in `response_type'
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:31:in `block in call'
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday-0.9.0/lib/faraday/response.rb:57:in `on_complete'
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:30:in `call'
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday-0.9.0/lib/faraday/rack_builder.rb:139:in `build_response'
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday-0.9.0/lib/faraday/connection.rb:377:in `run_request'
from /Users/blanecordes/.rvm/gems/ruby-2.0.0-p353@can/gems/faraday-0.9.0/lib/faraday/connection.rb:177:in `post'
gem 中的第 59 行:
def response_type(env)
type = env[:response_headers][CONTENT_TYPE].to_s
type = type.split(';', 2).first if type.index(';')
type
end
【问题讨论】:
-
如果你使用
content_type: /\bxml$/。另外,您能否curl该 HTTP 路径并看到您确实收到了响应? -
@cevaris 我在使用 /\bxml$/ 时得到了相同的响应 我在删除构建器块时得到了响应,所以它与此有关
标签: ruby-on-rails ruby xml faraday