が再書き込みサボンボディの名前空間によって書かしようとしています無視 - ins0
私はこのクライアント変数があります。サボンはnamespace_identifier属性
client = Savon.client(wsdl: "https://integcert.synxis.com/interface/Contracts/ChannelConnect2004.wsdl", log_level: :debug, log: true, pretty_print_xml: true, env_namespace: :soapenv, namespaces: {"xmlns:soapenv": "http://schemas.xmlsoap.org/soap/envelope/", "xmlns:head": "http://htng.org/1.1/Header/","xmlns:ns": "http://www.opentravel.org/OTA/2003/05"}, convert_request_keys_to: :none, namespace_identifier: "ns", element_form_default: :qualified)
とAMは要求をやって:
client.call(:ping, soap_header: { "head:HTNGHeader": { "head:From": { "head:Credential": { "head:userName": "******", "head:password":"*****" }}}}, message: {"ns:EchoData": "TestData"})
を私は」 veはこの石鹸rq体を持っています:
<soapenv:Body>
<ins0:OTA_PingRQ>
<ns:EchoData>TestData</ns:EchoData>
</ins0:OTA_PingRQ>
</soapenv:Body>
ここでこのins0から来ていますか?
はまた、私はnamespace_identifier: nil
パラメータでクライアントを定義しようとしましたし、要求のこの種のやったとき:私はこの石鹸RQ本体を持って
client.call(:ping, soap_header: { "head:HTNGHeader": { "head:From": { "head:Credential": { "head:userName": "******", "head:password":"*****" }}}}, message: {"ns:OTA_PingRQ": {"ns:EchoData": "TestData"}})
:
<soapenv:Body>
<OTA_PingRQ>
<ns:OTA_PingRQ>
<ns:EchoData>TestData</ns:EchoData>
</ns:OTA_PingRQ>
</OTA_PingRQ>
そして、私が持っている正しい体は:
<soapenv:Body>
<ns:OTA_PingRQ>
<ns:EchoData>TestData</ns:EchoData>
</ns:OTA_PingRQ>
</soapenv:Body>
追加のネストされたOTA_PingRQ
ノードを削除する方法、またはins0
名前空間をカスタムで置き換える方法はありますか?
SOAP:envelopeを含む完全なXMLを投稿してください。名前空間接頭辞ins0はSOAPエンベロープで宣言されている必要があります。 ins0、nsが両方とも "http://www.opentravel.org/OTA/2003/05"と定義されている場合、要求は有効です。 SOAP UIを使用して、生成されたSOAPリクエストを検証してテストすることをお勧めします。 – sashwat