我正在尝试使用带有minitest和Net:HTTP的ruby来测试web服务的功能。
此代码
class TestOne < MiniTest::Unit::TestCase
load 'test/test_helper.rb'
def test_one
xml_to_transmit = "
<?xml version='1.0' encoding='UTF-8' ?>
<MyRequest version='1.0'>
<Id>1</Id>
</MyRequest>"
url = URI('http://example.com/api')
resp, data = Net::HTTP.post_form(url,nil => xml_to_transmit)
end
end
将转义我尝试作为参数发送到服务器的xml。有没有办法将其转发? (我无法更改服务器端代码。)
这是服务器收到的参数
=%0A%3C%3Fxml+version%3D%271.0%27+encoding%3D%27UTF-8%27+%3F%3E%0A%3CMyRequest+version%3D%271.0%27%3E%0A%09%3CId%3E1%3C%2FId%3E%0A%3C%2FMyRequest%3E
我的test_helper.rb非常基本
require 'minitest/unit'
require 'minitest/autorun'
require 'net/http'
有没有人对为什么会这样做以及我能做些什么有任何想法?
答案 0 :(得分:1)
这应该有效:
req = Net::HTTP::Post.new(url.path)
req.body = xml_to_transmit
req.content_type = "text/xml"
res = Net::HTTP.start(url.host, url.port) { |http|
http.request(req)
}