Ruby向服务器发送xml

Ruby向服务器发送xml,ruby,xml,net-http,Ruby,Xml,Net Http,我是网络编程新手,现在在向服务器发送一些xml数据时遇到了问题 我有以下代码: require "net/http" require "net/https" require "uri" xml = <<XML <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><data appname="dhl_entwicklerportal" language-code="de" password="Dhl_

我是网络编程新手,现在在向服务器发送一些xml数据时遇到了问题

我有以下代码:

require "net/http"
require "net/https"
require "uri"

xml = <<XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><data appname="dhl_entwicklerportal" language-code="de" password="Dhl_123!" request="get-status- for-public-user"><data piece-code="034234"></data></data>
XML

uri = URI('https://cig.dhl.de/services/sandbox/rest/sendungsverfolgung')

nhttp = Net::HTTP.new(uri.host, uri.port)
nhttp.use_ssl=true
nhttp.verify_mode=OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri)
request.basic_auth 'hidden', 'hidden'
response = nhttp.start {|http|
  http.request(request, xml: xml)
}

puts response.body
需要“net/http”
需要“net/https”
需要“uri”

xml=
httpget
请求不能有正文,因此第二个参数用于作为查询字符串附加到url的数据。您可能希望使用支持真实请求主体的
POST

http.request_post(request, xml)

更新:我想我误解了

根据有效的查询字符串,它使用的是
GET
。但是它希望XML在
?XML=
之后。因此,您需要将请求正文/查询字符串编码为散列,以
xml
作为键,以xml字符串作为值

所以不是这样:

http.request(request, xml)
# GET http://domain.com/path?<myxml></myxml>
http.request(请求,xml) #得到http://domain.com/path?
但这是:

http.request(request, xml: xml)
# GET http://domain.com/path?xml=<myxml></myxml>
http.request(请求,xml:xml) #得到http://domain.com/path?xml=
谢谢,但现在我得到一个错误d:/Ruby200/lib/ruby/2.0.0/net/http/generic\u request.rb:179:in
send\u request\u with_body':未定义的方法
bytesize'for#(NoMethodError)。
http.request(request, xml)
# GET http://domain.com/path?<myxml></myxml>
http.request(request, xml: xml)
# GET http://domain.com/path?xml=<myxml></myxml>