2017-01-24 5 views
0

Ich bin neu in SOAP, und ich bin ein wenig unsicher, wie dies zu tun ist. Die Dokumentation des Anbieters ist sehr begrenzt, es war also eine Frage von ein wenig Versuch und Irrtum, da sie keinen Support anbieten. Die Dokumentation besagt, dass das XML mit dem folgenden beginnen sollte - und ich nehme dann an, dass sie Header bedeuten.Einstellung SOAPHeader mit PHP

POST /Economy/InvoiceOrder/V001/InvoiceService.asmx HTTP/1.1 
Host: api.url.com 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "http://url.com/webservices/GetDeliveryMethods" 

Ich habe versucht, den Header auf folgende Weise einstellen:

$header = new SoapHeader(
          "POST /Economy/InvoiceOrder/V001/InvoiceService.asmx HTTP/1.1", 
          "Host: api.url.com", 
          "Content-type: text/xml;charset='utf-8'", 
          "Content-length: ".strlen($xmlfinal),        
          "SOAPAction: http://url.com/webservices/GetDeliveryMethods" 

         ); 
    $invoiceService->__setSoapHeaders($header); 

jedoch die Anforderung kehrt als "Bad Request". Mein XML sieht nach den Beispielen des Providers gut aus.

Das XML wird als Datei auf dem Server erstellt und in $ xmlfinal gespeichert.

Hat jemand irgendeinen Hinweis darauf, was ich falsch machen könnte? Ich schätze jede Hilfe, die Sie anbieten können.

Antwort

0

Der "SoapHeader" erscheint im XML in <header> Elemente. Dies ist wahrscheinlich nicht das, was Sie wollen.

Sie können Header in den Stream Kontext gesetzt und dass

$opts = array(
    'http' => array(
     'header' => 'YourHeader: value' 
    ), 
); 

$ctx = stream_context_create($opts); 

$client = new SoapClient('the.wsdl', array('stream_context' => $ctx)); 
an die Seife Client übergeben
Verwandte Themen