dongwo5940
2016-11-22 16:59
浏览 58
已采纳

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

Hi i've a WSDL with an argument as input, and 3 arguments as output.

But when i use a client, i get only one argument!

Here my 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>

Here my php server function:

$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;
}

And at the end my only result argument is: "nome".

Why? Where is the mistake?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doubi1818 2016-11-24 15:49
    已采纳

    Ok, my error was on the php part... Using class, it works! :)

    $oggetto = new stdClass();
    
    $oggetto->cognome = 'Venneri';
    $oggetto->nome = 'Stefano';
    $oggetto->codiceFiscale = $codFiscale;
    
    return $oggetto;
    
    已采纳该答案
    打赏 评论

相关推荐 更多相似问题