2017-01-06 8 views
0

Ich verwende PHP 5.6 als das ist, was der Client verwendet. Ich muss mit einem Microsoft WCF-Dienst über SOAP kommunizieren, ohne WSDL zu verwenden.PHP: Standard-SOAP-XML-Namespace

Ich bin mehr oder weniger dort, aber es wäre mein Leben viel einfacher zu machen, wenn es eine Möglichkeit, den Standard-XML-Namespace für den SOAP-Umschlag zu setzen ist.

Ich dachte, die Option auf den SoapClient Konstruktor ‚URI‘ Einstellung würde dies tun, aber es hat nicht.

Der WCF-Dienst legt diesen Standardnamespace fest, daher muss ich alle Variablen SoapVar mit diesem Namespace explizit markieren, damit es funktioniert.

Ist es möglich, die SoapClient zu erhalten den Standard-Namespace zu setzen?

d.h.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
       xmlns="http://tempuri.org/"> 
<!-- SOAP Contents --> 
</soap:Envelope> 

Standard-Namespace http://tempuri.org/ ist.

+0

Können zeigen Sie den Code, wie Sie die Soapclient instanziiert? Der Parameter $ options im Konstruktor hat eine uri-Option, mit der der Namespace im Nicht-WSDL-Modus festgelegt wird. –

Antwort

0

Wenn Sie das fragen, verwenden Sie wahrscheinlich den WSDL-Modus. Die WSDL definiert den Standardnamespace.

Ansonsten the docs helfen Ihnen:

Wenn im nicht-WSDL-Modus arbeiten, müssen die Lage und uri Optionen eingestellt werden, in dem Standort ist die URL des SOAP-Server die Anfrage an, zu senden und zu uri der Zielnamespace des SOAP-Service.

+0

Seltsamerweise wurde der WSDL-Modus definitiv nicht verwendet, und das Festlegen der Option 'uri' hatte keine Auswirkungen auf den Standardnamespace des Soap-Umschlags. Der Client, mit dem ich arbeite, benutzt PHP 5.4, das könnte ein Faktor sein – Marlon