我需要发送一个POST请求作为XML字符串,但我得到奇怪的结果。代码:
require 'rest_client'
response = RestClient.post "http://127.0.0.1:2000", "<tag1>text</tag1>", :content_type => "text/xml"
我希望在请求服务器上接收"<tag1>text</tag1>"
作为参数。相反,我得到"tag1"=>"text"
。它将XML转换为哈希。这是为什么?有什么方法吗?
答案 0 :(得分:2)
试试这个:
response = RestClient.post "http://127.0.0.1:2000",
"<tag1>text</tag1>",
{:accept => :xml, :content_type => :xml}
我认为您只需指定“:accept”即可让它知道您希望以XML格式接收它。假设它是您自己的服务器,您可以在服务器上进行调试,并查看使用的请求格式可能是html。
希望有所帮助。
答案 1 :(得分:0)
不使用RestClient,而是使用Ruby内置的Open::URI GET
请求或类似Net::HTTP或强大的Typhoeus:
uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
在Typhoeus中,你会使用:
res = Typhoeus::Request.post(
'http://localhost:3000/posts',
:params => {
:title => 'test post',
:content => 'this is my test'
}
)
您生成的结果页面,如果是XML格式,则可以使用Nokogiri轻松解析:
doc = Nokogiri::XML(res.body)
此时,您将拥有一个完全解析的DOM,可以使用Nokogiri的搜索方法进行搜索,例如search
和at
,或任何相关方法。