要在SOAP请求中添加变量,不使用SAVON,可以使用Ruby的标准库Net::HTTP来手动构建SOAP请求。
下面是一个示例代码,演示了如何手动构建SOAP请求并添加变量:
require 'net/http'
require 'uri'
# SOAP请求的URL和XML模板
url = URI.parse('http://example.com/soap-endpoint')
xml_template = <<~XML
%{variable1}
%{variable2}
XML
# 替换XML模板中的变量
variables = {
variable1: 'value1',
variable2: 'value2'
}
xml = xml_template % variables
# 构建SOAP请求
request = Net::HTTP::Post.new(url.path)
request.body = xml
request.content_type = 'text/xml'
request['SOAPAction'] = 'SomeSoapAction'
# 发送SOAP请求并获取响应
response = Net::HTTP.start(url.host, url.port) do |http|
http.request(request)
end
# 打印响应的内容
puts response.body
在上面的示例中,我们首先定义了SOAP请求的URL和XML模板。然后,我们使用Ruby的字符串插值来替换XML模板中的变量。接下来,我们使用Net::HTTP库构建了一个POST请求,并设置请求的内容类型和SOAPAction头。最后,我们使用Net::HTTP发送请求并获取响应。
请注意,在实际使用时,需要根据自己的SOAP服务的要求来修改SOAP请求的URL、XML模板、请求头等内容。