Re: [SOAP] Expected paramaters not matching

From: Date: Wed, 12 Apr 2006 18:33:18 +0000
Subject: Re: [SOAP] Expected paramaters not matching
References: 1  Groups: php.soap 
Request: Send a blank email to php-soap+get-2193@lists.php.net to get a copy of this message
Hi, All I see in the WSDL is sequences, so from looking at the WSDL I would expect array's? For example the authenticateSoapIn defines one parameter which is a sequence of strUserName and strPassword. Are you sure the wsdl is correct? Kind regards, David bowb wrote:
I am using php soap from php 5.0.4 and I am running into the following situation. I am expecting two string parameters being passed into my authenticate function but instead I am getting an array that looks like this: array("strUserName"=>"test","strPassword"=>"test") my php code: function authenticate($strUserName,$strPassword) { return null; } ini_set("soap.wsdl_cache_enabled", "0"); $server = new SoapServer("QBWebConnectorSvc.wsdl"); $server->addFunction("authenticate"); $server->handle(); my wsdl file: <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://developer.intuit.com/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://developer.intuit.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>       <s:schema elementFormDefault="qualified"
targetNamespace="http://developer.intuit.com/">
      <s:element name="authenticate">
        <s:complexType>
          <s:sequence>
           <s:element minOccurs="0" maxOccurs="1" name="strUserName"
type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="strPassword"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>       <s:element name="authenticateResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="authenticateResult"
typ e="tns:ArrayOfString" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfString">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="string"
nillable= "true" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:element name="sendRequestXML">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ticket"
type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="strHCPResponse"
type="s :string" />
            <s:element minOccurs="0" maxOccurs="1" name="strCompanyFileName"
typ e="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="qbXMLCountry"
type="s:s tring" />
            <s:element minOccurs="1" maxOccurs="1" name="qbXMLMajorVers"
type="s :int" />
            <s:element minOccurs="1" maxOccurs="1" name="qbXMLMinorVers"
type="s :int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="sendRequestXMLResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1"
name="sendRequestXMLResult" t ype="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="receiveResponseXML">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ticket"
type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="response"
type="s:strin g" />
            <s:element minOccurs="0" maxOccurs="1" name="hresult"
type="s:string " />
            <s:element minOccurs="0" maxOccurs="1" name="message"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="receiveResponseXMLResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1"
name="receiveResponseXMLResul t" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="connectionError">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ticket"
type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="hresult"
type="s:string " />
            <s:element minOccurs="0" maxOccurs="1" name="message"
type="s:string " />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="connectionErrorResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1"
name="connectionErrorResult" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getLastError">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ticket"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="getLastErrorResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="getLastErrorResult"
typ e="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="closeConnection">
      <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ticket"
type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="closeConnectionResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1"
name="closeConnectionResult" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
</wsdl:types> <wsdl:message name="authenticateSoapIn">
    <wsdl:part name="parameters" element="tns:authenticate" />
</wsdl:message> <wsdl:message name="authenticateSoapOut">
    <wsdl:part name="parameters" element="tns:authenticateResponse" />
</wsdl:message> <wsdl:message name="sendRequestXMLSoapIn">
    <wsdl:part name="parameters" element="tns:sendRequestXML" />
</wsdl:message> <wsdl:message name="sendRequestXMLSoapOut">
    <wsdl:part name="parameters" element="tns:sendRequestXMLResponse" />
</wsdl:message> <wsdl:message name="receiveResponseXMLSoapIn">
    <wsdl:part name="parameters" element="tns:receiveResponseXML" />
</wsdl:message> <wsdl:message name="receiveResponseXMLSoapOut">
    <wsdl:part name="parameters" element="tns:receiveResponseXMLResponse" />
</wsdl:message> <wsdl:message name="connectionErrorSoapIn">
    <wsdl:part name="parameters" element="tns:connectionError" />
</wsdl:message> <wsdl:message name="connectionErrorSoapOut">
    <wsdl:part name="parameters" element="tns:connectionErrorResponse" />
</wsdl:message> <wsdl:message name="getLastErrorSoapIn">
    <wsdl:part name="parameters" element="tns:getLastError" />
</wsdl:message> <wsdl:message name="getLastErrorSoapOut">
    <wsdl:part name="parameters" element="tns:getLastErrorResponse" />
</wsdl:message> <wsdl:message name="closeConnectionSoapIn">
    <wsdl:part name="parameters" element="tns:closeConnection" />
</wsdl:message> <wsdl:message name="closeConnectionSoapOut">
    <wsdl:part name="parameters" element="tns:closeConnectionResponse" />
</wsdl:message> <wsdl:portType name="QBWebConnectorSvcSoap">
    <wsdl:operation name="authenticate">
      <wsdl:input message="tns:authenticateSoapIn" />
      <wsdl:output message="tns:authenticateSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="sendRequestXML">
      <wsdl:input message="tns:sendRequestXMLSoapIn" />
      <wsdl:output message="tns:sendRequestXMLSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="receiveResponseXML">
      <wsdl:input message="tns:receiveResponseXMLSoapIn" />
      <wsdl:output message="tns:receiveResponseXMLSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="connectionError">
      <wsdl:input message="tns:connectionErrorSoapIn" />
      <wsdl:output message="tns:connectionErrorSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="getLastError">
      <wsdl:input message="tns:getLastErrorSoapIn" />
      <wsdl:output message="tns:getLastErrorSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="closeConnection">
      <wsdl:input message="tns:closeConnectionSoapIn" />
      <wsdl:output message="tns:closeConnectionSoapOut" />
    </wsdl:operation>
</wsdl:portType> <wsdl:binding name="QBWebConnectorSvcSoap" type="tns:QBWebConnectorSvcSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="docume nt" />
    <wsdl:operation name="authenticate">
      <soap:operation soapAction="http://developer.intuit.com/authenticate"
styl e="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="sendRequestXML">
      <soap:operation
soapAction="http://developer.intuit.com/sendRequestXML" st yle="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />          </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="receiveResponseXML">
      <soap:operation
soapAction="http://developer.intuit.com/receiveResponseXML" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="connectionError">
      <soap:operation
soapAction="http://developer.intuit.com/connectionError" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getLastError">
      <soap:operation soapAction="http://developer.intuit.com/getLastError"
style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="closeConnection">
      <soap:operation
soapAction="http://developer.intuit.com/closeConnection" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
</wsdl:binding> <wsdl:service name="QBWebConnectorSvc">
    <wsdl:port name="QBWebConnectorSvcSoap"
binding="tns:QBWebConnectorSvcSoap">
      <soap:address
location="https://test.webservice.com/~bowb/oscommerce_test/catalog/qbpos_webservice.php" />
    </wsdl:port>
</wsdl:service> </wsdl:definitions> and the raw post data: [<?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><authenticate xmlns="http://developer.intuit.com/"><strUserName>test</strUserName><strPassword>test</strPassword></authenticate></soap:Body></soap:Envelope>] Is the array parameter the expected behavior or should I be getting the two parameters. I am new to php soap and wsdl and need some direction on what I should be expecting from php soap and the wsdl file. Thanks, Truman -- View this message in context: http://www.nabble.com/Expected-paramaters-not-matching-t1427250.html#a3848975 Sent from the Php - Soap forum at Nabble.com.


« previous php.soap (#2193) next »