首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Faraday发布XML并接收响应?

如何使用Faraday发布XML并接收响应?
EN

Stack Overflow用户
提问于 2014-01-06 19:12:00
回答 1查看 4K关注 0票数 4

我正在尝试学习Ruby/Faraday。我需要将XML发布到RESTful web服务,并对如何做到这一点感到困惑。

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

代码语言:javascript
运行
复制
require "faraday"
require "faraday_middleware"
mystring = %&<xml><auth><user userid='username' pwd='password'/></auth></xml>&

如何将XML发布到URL并接收结果?我试着做这样的事情:

代码语言:javascript
运行
复制
conn = Faraday.new(:url=>'http://url')
conn.post '/logon' {mystring}

我收到这样的信息:

代码语言:javascript
运行
复制
SyntaxError: (irb):11: syntax error, unexpected '{', expecting $end
conn.post '/logon' {mystring}

编辑1我已经得到了工作的帖子请求。下面提供了我的代码。

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-06 19:17:05

根据文件

代码语言:javascript
运行
复制
conn = Faraday.new(:url=>'http://url')
conn.post '/logon', mystring

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

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

代码语言:javascript
运行
复制
 { "string" }

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

代码语言:javascript
运行
复制
conn = Faraday.new(:url=>'http://url')
conn.post '/logon', mystring

或者:

代码语言:javascript
运行
复制
conn = Faraday.new(:url=>'http://url')
conn.post '/logon', { :key => mystring }

如果要提交密钥/值POST主体,请执行以下操作。但这不是您的情况,因为您已经发布了一个XML主体。

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

https://stackoverflow.com/questions/20957444

复制
相关文章

相似问题

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