【问题标题】:How do I POST XML using Faraday and receive response?如何使用 Faraday 发布 XML 并接收响应?
【发布时间】:2014-01-06 19:12:00
【问题描述】:

我正在尝试学习 Ruby/Faraday。我需要将 XML 发布到 RESTful Web 服务,但对如何执行此操作感到困惑。

我有一个包含如下 XML 的字符串:

require "faraday"
require "faraday_middleware"
mystring = %&<xml><auth><user userid='username' pwd='password'/></auth></xml>&

如何将 XML 发布到 URL 并接收结果?我正在尝试做类似的事情:

conn = Faraday.new(:url=>'http://url')
conn.post '/logon' {mystring}

我收到消息:

SyntaxError: (irb):11: syntax error, unexpected '{', expecting $end
conn.post '/logon' {mystring}

编辑 1 我已经得到了 POST 请求。下面提供了我的代码。

require "faraday"
require "faraday_middleware"

myString = %&<xml><auth><user userid='username' pwd='password'/></auth></xml>&
myUrl = %&url&

conn = Faraday.new(:url => myUrl) do |builder|
  builder.response :logger #logging stuff
  builder.use Faraday::Adapter::NetHttp #default adapter for Net::HTTP
end

res = conn.post do |request|
  request.url myUrl
  request.body = myString
end

puts res.body

【问题讨论】:

    标签: ruby faraday


    【解决方案1】:

    According to the documentation:

    conn = Faraday.new(:url=>'http://url')
    conn.post '/logon', mystring
    

    您的代码中有两个错误。第一个是您在 URL 和变量之间缺少逗号,导致 { mystring } 被解释为一个块。

    第二个错误是mystring已经拥有一个字符串,下面的代码在Ruby中没有意义:

     { "string" }
    

    因此conn.post '/logon', mystring 是错误的。所以最终的结果是:

    conn = Faraday.new(:url=>'http://url')
    conn.post '/logon', mystring
    

    或:

    conn = Faraday.new(:url=>'http://url')
    conn.post '/logon', { :key => mystring }
    

    如果您想提交键/值 POST 正文。但这不是您的情况,因为您已经发布了 XML 正文。

    【讨论】:

    猜你喜欢
    • 2019-10-03
    • 2012-03-11
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多