Domanda

mi sono imbattuto in uno strano oggi, va in questo modo:

Sono la creazione di suite di test per QA delle un servizio web di mio, che è scritto in PHP5 - facendo uso della classe SoapFault tra gli altri <. / p>

Io uso la classe di tornare messaggio di errore per i clienti. Esempio:

if (!$this->CheckHost(getenv('REMOTE_ADDR')))
{
    return new SoapFault(S_CLIENT, S_STRING_IP, "", S_DETAIL_IP);
}

Restituzione di una SoapFault se il cliente non è autorizzato ...

Ora, se posso aggiungere un'affermazione di conformità dello schema in soapUI 3.0.1 Racconta me che il messaggio restituito non è conforme al suo file WSDL.

Il file WSDL è stato scritto da me e non con i fatti non contiene una descrizione della classe SoapFault vero e proprio. Vorrei che sia necessario? Non perché il pensiero SoapFault è spezified in SOAP 1.1 in ogni modo.

La risposta reale è simile al seguente:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Client</faultcode>
         <faultstring>ERR_102</faultstring>
         <faultactor/>
         <detail>IP error message</detail>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Il messaggio di errore soapUI è:

  

Elemento 'dettaglio' con elemento di sola   tipo di contenuto non può avere contenuto del testo.

Qualcuno ha un suggerimento che cosa sto facendo male?

tia

K

È stato utile?

Soluzione

Lo schema XML SOAP 1.1 ( http://schemas.xmlsoap.org/soap/envelope/ ) definisce l'elemento dettaglio il

   <xs:complexType name="detail"><xs:sequence> 
      <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> 
    </xs:sequence> 
    <xs:anyAttribute namespace="##any" processContents="lax" /> 
  </xs:complexType> 

il che significa che non può contenere solo testo come nella colpa tua. Provare a cambiare la risposta a qualcosa di simile

...
   <detail><msg>IP error message</msg></detail>
...

Spero che questo aiuti!

saluti,

/ Ole eviware.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top