首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >faraday builder使用multixml解析正文

faraday builder使用multixml解析正文
EN

Stack Overflow用户
提问于 2014-04-24 08:05:43
回答 2查看 723关注 0票数 0

我希望将faraday设置为使用multi_xml,并在默认情况下解析响应正文。

代码语言:javascript
复制
@connection = Faraday.new(base_url) {|builder| builder.response :xml, content_type: /xml/}

通向:

代码语言:javascript
复制
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行:

代码语言:javascript
复制
 def response_type(env)
  type = env[:response_headers][CONTENT_TYPE].to_s
  type = type.split(';', 2).first if type.index(';')
  type
end
EN

回答 2

Stack Overflow用户

发布于 2014-04-24 08:16:19

尝试将builder变量移到块之外,如下所示...

代码语言:javascript
复制
@connection = Faraday.new(base_url) do |builder| 
   builder.response :xml, content_type: /xml/
end

这里有一个似乎对我有效的例子。

代码语言:javascript
复制
require 'faraday'
require 'faraday_middleware'
require 'pp'

base_url = 'http://www.w3schools.com/xml/note.xml'
@connection = Faraday.new(base_url) do |builder| 
   builder.response :xml,  :content_type => /\bxml$/
end
pp @connection
票数 0
EN

Stack Overflow用户

发布于 2016-01-13 01:03:43

遇到的错误是由于缺少适配器声明而导致的。你必须把它放在构建块的末尾。

代码语言:javascript
复制
require 'faraday'
require 'faraday_middleware'

@connection = Faraday.new(base_url) do |builder|
  builder.response :xml, content_type: /\bxml$/
  builder.adapter Faraday.default_adapter
end

请参阅:faraday_middleware's wiki

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23257446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档