2011-11-18 17 views
6

Ho creato un servizio Web in php utilizzando SOAPServer. Si aspetta di vedere uno SoapHeaderUsernameToken con elementi di nome utente e password. Tutto funziona davvero bene quando includo questa intestazione nella richiesta. Solo definendo un metodo nella classe del gestore Soap denominato "NomeutenteToken", questo metodo viene chiamato e l'oggetto stdClass Obj viene passato ad esso. Posso quindi convalidare l'utente tramite $Obj->username e $Obj->password.Come richiedere l'Authentication Soap Header in WSDL?

Quello che non so è cosa aggiungere al file WSDL per definire innanzitutto questa intestazione UsernameToken e in secondo luogo come indicare in WSDL che è necessario?

Ho letto da qualche parte che il nuovo standard SOAP deprecava la nozione di intestazione "richiesta".

Qualche consiglio su come almeno indicare è il mio wsdl che la richiesta dovrebbe includere questa intestazione?

+1

Puoi aggiungere il link dove hai letto che il nuovo standard SOAP ha deprecato la nozione dell'intestazione "richiesta"? – hakre

+1

Puoi mostrare il tuo attuale WSDL? – jap1968

risposta

3

Ecco un esempio di WSDL specificando il login: https://ws1.webservices.nl/soap_doclit?wsdl

<binding name="Webservices.nlBinding" type="tns:Webservices.nlPortType"> 
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
<operation name="login"> 
<soap:operation soapAction="https://ws1.webservices.nl/soap_doclit.php/login" style="document"/> 
<input> 
<soap:body use="literal"/> 
<soap:header message="tns:Headers" part="HeaderLogin" use="literal"/> 
<soap:header message="tns:Headers" part="HeaderAuthenticate" use="literal"/> 
</input> 
+2

la risposta non ha effettivamente risposto alla seguente domanda: "come indicare in WSDL che è necessario?" anche dopo tutto è un punto di partenza. –

1

Risposta lunga. Vedi il messaggio this.

Nel client è possibile utilizzare l'attributo mustUnderstand per indicare se una voce di intestazione è obbligatoria o facoltativa per il destinatario da elaborare. Se il server non può o non vuole elaborare un'intestazione obbligatoria, deve lanciare un errore SOAP al client.

Problemi correlati