我正在使用savon来针对SOAP服务进行请求。
无论如何,我在打Savon客户电话时遇到麻烦。
下面提到的是我的红宝石代码
client = Savon.client(
wsdl: "https://<URL>",
soap_header: { 'Content-Type:' => "text/xml"},
log: true,
pretty_print_xml: true
)
client.call(:get_active_employees_info,:xmlns =>"http://tempuri.org/") do
message("AppID" => "*******","Username" => "*****","Password" => "******")
end
返回
Savon::HTTPError: HTTP error (400)
但是在Postman上运行相同的摘要
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetActiveEmployeesInfo xmlns="http://tempuri.org/">
<AppID>**********</AppID>
<Username>********</Username>
<Password>**********</Password>
</GetActiveEmployeesInfo>
</soap12:Body>
</soap12:Envelope>
答案 0 :(得分:0)
我认为问题与您正在构建的请求正文有关。
由于您有一个可行的示例,因此我将首先检查savon的请求的主体构建。为此,请使用以下代码:
ops = client.operation(:get_active_employees_info)
puts ops.build(message: {"AppID" => "*******","Username" => "*****","Password" => "******"}).pretty
然后,将生成的消息与Postman的消息进行比较。希望对您有所帮助。