1

我正在尝试使用带有 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'

有没有人对为什么会发生这种情况以及我能做些什么有任何想法?

4

1 回答 1

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)
}
于 2012-07-13T15:35:58.610 回答