PHP SOAP服务器 - 函数不能获取所有元素

时间:2016-11-22 16:59:47

标签: php soap xsd wsdl

嗨我有一个WSDL,其中一个参数作为输入,3个参数作为输出。

但是当我使用客户端时,我只得到一个参数!

这是我的WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="gestioneAssistitiDefinitions" targetNamespace="http://test.it/test/soapServer/" xmlns:tns="http://test.it/test/soapServer/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
    <xsd:schema elementFormDefault="qualified">
        <xsd:complexType name="assistito">
            <xsd:all>           
              <xsd:element name="cognome" type="xsd:string" />
              <xsd:element name="nome" type="xsd:string" />
              <xsd:element name="codiceFiscale" type="xsd:string" />
            </xsd:all>
        </xsd:complexType>
    </xsd:schema>       
</types>
<message name="gestioneAssistiti">
  <part name="codFiscale" type="xsd:string" />
</message>
<message name="gestioneAssistitiRisposta">
  <part name="assistito" type="tns:assistito" />
</message>
<portType name="gestioneAssistitiPortType">
  <operation name="gestioneAssistiti">
    <documentation>Ottiene i dati dell'assitito partendo dal codice fiscale</documentation>
    <input message="tns:gestioneAssistiti"/>
    <output message="tns:gestioneAssistitiRisposta"/>
  </operation>
</portType>
<binding name="gestioneAssistitiBinding" type="tns:gestioneAssistitiPortType">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="gestioneAssistiti">
    <soap:operation soapAction="ottieniAssistito" style="rpc"/>
    <input><soap:body use="encoded" namespace="http://test.it/test/soapServer/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input>
    <output><soap:body use="encoded" namespace="http://test.it/test/soapServer/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output>
  </operation>
</binding>
<service name="gestioneAssistiti">
  <port name="gestioneAssistitiPort" binding="tns:gestioneAssistitiBinding">
    <soap:address location="http://test.it/test/soapServer/richiesta.php"/>
  </port>
</service>
</definitions>

这是我的php服务器功能:

$server= new SoapServer("server.wsdl", array('soap_version' => SOAP_1_2));
$server->addFunction("gestioneAssistiti");
$server->handle();

function gestioneAssistiti($codFiscale){

    $variabili = array(
        'cognome' => 'Test',
        'nome' => 'Stefano',
        'codiceFiscale' => $codFiscale
    );



    return $variabili;
}

最后我唯一的结果是:&#34; nome&#34;。

为什么呢?错误在哪里?

1 个答案:

答案 0 :(得分:0)

好的,我的错误是在php部分... 使用课程,它的工作原理! :)

$oggetto = new stdClass();

$oggetto->cognome = 'Venneri';
$oggetto->nome = 'Stefano';
$oggetto->codiceFiscale = $codFiscale;

return $oggetto;