PHP SoapClient: impostare uno spazio dei nomi senza prefisso

voti
0

Sto consumando un servizio WSDL SOAP utilizzando SoapClient di PHP. L'XML generato contiene le seguenti definizioni dello spazio dei nomi:

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/
    xmlns:ns1=WebApplicationImport
    ....>

E gli elementi di questo ns1spazio dei nomi sono tutti prefisso ns1:elementName.

Il fornitore di servizi dice che questo è sbagliato e che vogliono questi elementi senza il prefisso, anche se il WSDL definisce un requisito per esso: xmlns:tns=WebApplicationImport elementFormDefault=qualified.

Una soluzione è quella di effettuare le seguenti operazioni prima di inviare il codice XML: $xml = str_replace(':ns1', '', $xml);. Questo funziona, ma è chiaramente un hack, e io non sono un fan di hack.

C'è un modo per dire SoapClienta gestire uno spazio dei nomi specifico come default / non premettere ad essa? Cosa desidero raggiungere è <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ xmlns=WebApplicationImport>prima di generare il resto dell'involucro, che, in teoria, garantire che tutti gli elementi di tale dominio sono anche unprefixed. Questa sembrerebbe la soluzione adeguata e valida per me.

È pubblicato 24/10/2019 alle 12:57
fonte dall'utente
In altre lingue...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more