0
私はsavon 2.11.1を使用していますが、私が覚えている以上にXML Webサービスのことを忘れてしまったことは間違いありません。次のような問題を持つ:名前空間/無効なコンテンツ
<wsdl:definitions xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://myhost.com/ns/2008/08/15/webservices/ASUserManagement_1/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsdws="http://myhost.com/ns/2008/08/15/webservices/AccessServices" name="ASUserManagement_1" targetNamespace="http://myhost.com/ns/2008/08/15/webservices/UserManagement/wsdl">
<wsdl:types>
<xs:schema xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://myhost.com/ns/2008/08/15/webservices/AccessServices">
<xs:include schemaLocation="http://myhost.com:80/service/UserManagement?xsd=1"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="GetUserDetailsInput">
<wsdl:part name="GetUserDetails" element="xsdws:GetUserDetails"/>
</wsdl:message>
</wsdl:message>
<wsdl:message name="GetAllUserDetailsInput">
<wsdl:part name="GetAllUserDetails" element="xsdws:GetAllUserDetails"/>
</wsdl:message>
<wsdl:portType name="ASUserManagement">
<wsdl:operation name="GetUserDetails_1">
<wsdl:input message="tns:GetUserDetailsInput"/>
<wsdl:output message="tns:GetUserDetailsOutput"/>
</wsdl:operation>
<wsdl:operation name="GetAllUserDetails_1">
<wsdl:input message="tns:GetAllUserDetailsInput"/>
<wsdl:output message="tns:GetAllUserDetailsOutput"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ASUserManagementBinding" type="AAA-ASUserManagement">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetUserDetails_1">
<soap:operation soapAction="GetUserDetails_1"/>
<wsdl:input>
<soap:body parts="GetUserDetails" use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body parts="GetUserDetailsResponse" use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetAllUserDetails_1">
<soap:operation soapAction="GetAllUserDetails_1"/>
<wsdl:input>
<soap:body parts="GetAllUserDetails" use="literal"/>
</wsdl:input>
は、だから、微調整(簡潔にするためにトリミングされた)私が見る実際のWSDL宣言でよく見る
Savon::SOAPFault: (S:Client) org.xml.sax.SAXParseException; cvc-elt.1: Cannot find the declaration of element 'xsdws:GetUserDetails'.
:そう
client = Savon.client(wsdl: 'http://myhost.com/service?wsdl')
client.operations
=> [:get_user_details_1, :get_all_user_details_1, :set_user_details_1]
client.call(:get_user_details_1, message: { uuid: "ABC" })
は私にエラーメッセージが表示されましたxs:schema要素で宣言されている名前空間を含めることができます。
client = Savon.client(wsdl: 'http://myhost.com/service?wsdl', namespace: 'http://myhost.com/ns/2008/08/15/webservices/AccessServices')
client.call(:get_user_details_1, message: { uuid: "ABC" })
Savon::SOAPFault: (S:Client) org.xml.sax.SAXParseException; cvc-complex-type.2.4.a: Invalid content was found starting with element 'uuid'. One of '{"http://www.reuters.com/ns/2008/08/15/webservices/AAA-AccessServices_1":uuid}' is expected.
ない私がここで間違ってやっていることを確認 - 自動生成された.NETクライアントプロキシコードからサンプル有効な要求をフィドラーで次のようになります。
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetAllUserDetails xmlns="http://myhost.com/ns/2008/08/15/webservices/AccessServices"><uuid>ABC</uuid></GetAllUserDetails></soap:Body></soap:Envelope>
私は過ちを犯してきた任意のアイデア?