2016-12-07 3 views
0

Ich versuche, einen SOAP-Header zu machen, die wie folgt aussehen:Wie PHP SOAP Header wie dieses XML-Snippet zu machen?

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header> 
    <a-user xmlns="a">testName</a-user> 
    <a-pass xmlns="a">testPassword</a-pass> 
    </s:Header> 
    <s:Body> 
    ... 
    </s:Body> 
</s:Envelope> 

ich Seife ziemlich neu bin so bin ich ziemlich sicher, dass ich gerade verstehe nicht, was ich soll in für die Parameter des Soapheader Konstruktor, ist es das, was ich zur Zeit versucht, und es hält die Authentifizierung versagt:

 $authHeader = new SoapHeader("http://schemas.xmlsoap.org/soap/envelope/", "Envelope", array("Header" => array("a-user" => "testName", "a-pass" => "testPassword"))); 

Kann mir jemand erklären, wie ich diesen Header aus der xML in eine php SOAPHeader- übersetzen soll Bitte?

Bearbeiten: Ja, agunn, ich benutze einen echten Benutzernamen und pass, ich bekomme eine SoapFault-Ausnahmen sagen "Anbieter nicht autorisiert!" wenn ich meine Seife mache.

Hier ist die Seife Rufteil enthalten:

$this->client->__setSoapHeaders($authHeader); 
$response = $this->client->__soapCall("Foo", $params); 
+0

So @uRockNinja, wenn Sie sagen, dass der Umschlag Konstruktor in Ihrem Code-Snippet ist das, was du gerade "probierst", du meinst das nicht wörtlich, oder? Das heißt, Sie sind in Ihrem echten Code mit einem richtigen Benutzernamen und Passwort richtig? Wenn ja, können Sie genauer auf Ihre Fehlermeldung oder Codes eingehen? Ihr Code-Snippet sieht wie ein vernünftiger Versuch aus, also werden Helfer wahrscheinlich mehr Informationen benötigen, um zu helfen. –

+0

Können Sie Ihren All-Soap-Anrufteil hinzufügen? –

Antwort

0
$authHeader = new SoapHeader("http://schemas.xmlsoap.org/soap/envelope/", "Envelope", array("Header" => array("a-user" => "testName", "a-pass" => "testPassword"))); 

Durch die Soapclient-Spezifikation sollten Sie versuchen, wie diese

$this->client->__setSoapHeaders(array($authHeader)); 
$response = $this->client->__soapCall("Foo", $params); 
+0

Ich habe vergessen zu sagen, dass Sie Ihre Anfrage ausdrucken/vardump können, um zu sehen, wie es aussieht. Benutze echo $ this-> client -> __ getLastRequest(); – Coke