我正在尝试学习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我已经得到了工作的帖子请求。下面提供了我的代码。
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
发布于 2014-01-06 19:17:05
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主体。
https://stackoverflow.com/questions/20957444
复制相似问题