我想打从Ruby的SOAP服务on Rails的 - 从SOAP UI,我可以打它精致和请求XML是如下:试图用Savon构建SOAP请求?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:mun="http://schemas.datacontract.org/2004/07/MyExternalService.Map" xmlns:mun1="http://schemas.datacontract.org/2004/07/MyExternalService.Common.Map">
<soapenv:Header/>
<soapenv:Body>
<tem:GetInformationsForCoordinates>
<!--Optional:-->
<tem:coordReq>
<!--Optional:-->
<mun:Coordinates>
<!--Zero or more repetitions:-->
<mun:Coordinate>
<!--Optional:-->
<mun:Id>1</mun:Id>
<!--Optional:-->
<mun:QualityIndex>90</mun:QualityIndex>
<!--Optional:-->
<mun:X>-110.5322</mun:X>
<!--Optional:-->
<mun:Y>35.2108</mun:Y>
</mun:Coordinate>
</mun:Coordinates>
</tem:coordReq>
<!--Optional:-->
<tem:analysisTypes>
<!--Zero or more repetitions:-->
<mun:AnalysisType>Additional</mun:AnalysisType>
</tem:analysisTypes>
</tem:GetInformationsForCoordinates>
</soapenv:Body>
</soapenv:Envelope>
如果我复制确切的XML到一个Ruby字符串request = %q(XML STRING)
为萨翁和使用方法,然后在萨翁调用如下
response = client.call(:get_info, xml: request)
它按预期工作,我得到我的回应 - 但在现实中我想只是传递参数给萨翁。到目前为止,我已经试过如下:
coordinate = { Id: '1', X: -110.5322, Y: 35.2108, QualityIndex: 90 }
coordinates = {Coordinates: [coordinate] }
coordinateReq = {coordReq: {coordinates: coordinates} }
response = client.call(:get_informations_for_coordinates, message: coordinateReq)
这将失败,如果我看我送它的XML如下:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://tempuri.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Body>
<tns:GetInformationsForCoordinates>
<coordReq>
<coordinates>
<coordinates>
<Id>1</Id>
<X>-110.5322</X>
<Y>35.2108</Y>
<QualityIndex>90</QualityIndex>
</coordinates>
</coordinates>
</coordReq>
</tns:GetInformationsForCoordinates>
</env:Body>
</env:Envelope>
相较于什么是从SOAP UI送我失踪xmlns:mum命名空间 - 无论如何,我可以将它添加到我的请求中,以便将它添加到每个参数中,即X,Y QualityIndex - 也是类似于我的Savon调用中的tns的tem添加到SOAPUI中的coordReq,但不添加在我的萨翁召集 - 无论如何,我可以添加它?
此外,我在编制如何构建我的请求的分析类型和AnalysisType部分时遇到了一些困难?
对不起,我应该有说我正在使用萨翁版本2 - 我已经添加了这里显示的名称空间 - http://savonrb.com/version2/globals。html,但它添加了多个命名空间,我似乎无法工作,我需要某些参数的tem和其他的mun,因为它显示在我的SOAP UI请求中 –
我的问题的其他部分的任何想法 - 即 - 如何建立分析响应和类型到我的请求我传递给消息: –
编辑我的答案。我相信你应该为第二部分提出一个新问题。 –