запрос через SOAP UIКак вызвать массив в SOAP с Савон 2 в рельсах 4
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<soapenv:Header/>
<soapenv:Body>
<tem:GetLastDayRounds>
<!--Optional:-->
<tem:glIds>
<!--Zero or more repetitions:-->
<arr:int>7910</arr:int>
<arr:int>791524</arr:int>
<arr:int>5613</arr:int>
</tem:glIds>
</tem:GetLastDayRounds>
</soapenv:Body>
</soapenv:Envelope>
отвечают через SOAP UI
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetLastDayRoundsResponse xmlns="http://tempuri.org/">
<GetLastDayRoundsResult xmlns:a="http://schemas.datacontract.org/GL.WS" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Message i:nil="true"/>
<a:Rounds xmlns:b="http://schemas.datacontract.org/GL.WS.Entities">
<b:Round>
<b:AdjustedScore>91</b:AdjustedScore>
</b:Round>
<b:Round>
<b:AdjustedScore>92</b:AdjustedScore>
</b:Round>
<b:Round>
<b:AdjustedScore>191</b:AdjustedScore>
</b:Round>
</a:Rounds>
<a:Status>Success</a:Status>
</GetLastDayRoundsResult>
</GetLastDayRoundsResponse>
</s:Body>
</s:Envelope>
Это, как я сделал связь:
url = "http://api.wsdl.address"
@client = Savon.client(
wsdl: url,
namespace: "http://tempuri.org/",
env_namespace: :soapenv,
log: true, # set true to switch on logging
log_level: :debug,
pretty_print_xml: true,
open_timeout: 3000000,
read_timeout: 3000000
)
Теперь это то, что я думаю, что мой звонок SAVON 2 должен быть:
response = @client.call(:get_last_day_rounds, message: {"tns:glIds" => [7910,791524]})
Но я получаю внутреннюю ошибку от поставщика. Если я тестирую это через SOAP UI, я получаю результат и все прекрасно, однако я не могу понять, как это сделать через SAVON 2.
Спасибо.
SAVON 2 Вход:
По просьбе:
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://tempuri.org/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:GetLastDayRounds>
<tns:glIds>7910</tns:glIds>
<tns:glIds>791524</tns:glIds>
</tns:GetLastDayRounds>
</soapenv:Body>
</soapenv:Envelope>
отвечают:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
<faultstring xml:lang="en-AU">The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
Я попытался это тоже:
response = @client.call(:get_last_day_rounds, message: { "tns:glIds" => { "int" => [79124,123] } })
SAVON Log:
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://tempuri.org/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:GetLastDayRounds>
<tns:glIds>
<int>791524</int>
<int>123</int>
</tns:glIds>
</tns:GetLastDayRounds>
</soapenv:Body>
</soapenv:Envelope>
я получил следующее сообщение об ошибке
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
<faultstring xml:lang="en-AU">The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
вы должны обеспечить выход журналов. –
Здесь вы идете мат. Я добавил журнал. –