I am implementing the OTA_ReadRQ / OTA_ResRetrieveRS message pair and I have hit a problem. All the other messages I have implemented as paired messages EG: OTA_HotelAvailRQ / OTA_HotelAvailRS
I have tried to create the SOAP WSDL but I get an error from the client;
[faultcode] => SOAP-ENV:Client [faultstring] => Operation 'OTA_ReadRQ' is not defined in the WSDL for this service
It seems to me I need another definition for OTA_ReadRQ
So I tried duplicating the definitions, but it then said I have a duplicate “name”
I can’t find any information on implementing multiple definitions
<definitions
name="OTA_ResRetrieveRS"
targetNamespace="xx/resretrieve">`
The wsdl body which defines the elements etc is all fine and validates perfectly.
I can add the entire wsdl if that would help.
I believe the issue is with this section which defines the operation not have a matching definition for OTA_ReadRQ
<message name="ResRetrieveIn">
<wsdl:documentation xmlns:wsdl="schemas.xmlsoap.org/wsdl/"/>
<part name="messagePart" element="import0:OTA_ReadRQ"/>
</message>
<message name="ResRetrieveOut">
<wsdl:documentation xmlns:wsdl="schemas.xmlsoap.org/wsdl/"/>
<part name="messagePart" element="import0:OTA_ResRetrieveRS"/>
</message>
<portType name="OTA_ResRetrieveInterface">
<wsdl:documentation xmlns:wsdl="schemas.xmlsoap.org/wsdl/"/>
<operation name="ResRetrieve">
<wsdl:documentation xmlns:wsdl="schemas.xmlsoap.org/wsdl/"/>
<input message="tns:ResRetrieveIn"/>
<output message="tns:ResRetrieveOut"/>
</operation>
</portType>
<binding name="OTA_ResRetrieve" type="tns:OTA_ResRetrieveInterface">
<soap:binding transport="schemas.xmlsoap.org/soap/http"/>
<operation name="ResRetrieve">
<soap:operation soapAction="/xml:ResRetrieveIn"
style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<binding name="OTA_ResRetrieveSoap12" type="tns:OTA_ResRetrieveInterface">
<soap12:binding transport="schemas.xmlsoap.org/soap/http"/>
<operation name="ResRetrieve">
<soap12:operation soapAction="xxx/xml:ResRetrieveIn" style="document"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
</binding>
<service name="OTA_ResRetrievePort">
<port name="OTA_ResRetrievePort" binding="tns:OTA_ResRetrieve">
<soap:address location="xxx/hotel_res_retrieve.php"/>
</port>
<port name="OTA_ResRetrieveSOAP12Port" binding="tns:OTA_ResRetrieveSoap12">
<soap12:address location="xxx/hotel_res_retrieve.php"/>
</port>
</service>
Note: I had to remove all the url references to get this to post
Steve Farmer is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.