PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SoapClient mit Authorization Basic Header


lupo72
12.02.2016, 13:00:39
Ich muss einen SoapClient zu einem Webservice mit Anmeldedaten erstellen.

Der Server verlangt das die Authentfizierung per Header Authorization Basic mitgeschickt wird - mit SoapUI bekomme ich die Connection indem ich die Authorization "basic" mit angebe wie kann ich das in PHP nachbauen?

Dieser Header wird verlangt - so schickt ihn SoapUI

POST http://aktuell.kundeninformation.net/api/soap/v6 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 302
Host: aktuell.kundeninformation.net
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Authorization: Basic [user&pass-base64-encoded]

So sieht mein Code momentan aus - ich versuche die Authorisierung per SoapHeader zu setzen

$namespace = "http://ecircle.com/developer/ecmapi";
$wsdl = "https://sslh.teradatadmc.com/teradata/api/soap/v6?wsdl";
$client = new SoapClient($wsdl, array("trace" => 1, "exceptions" => 0));
$login = 'xxx';
$password = 'yyy';
$header = new SoapHeader($namespace, 'Authorization: Basic', base64_encode($login. ':' $password));
$client->__setSoapHeaders($header);


Der Server lehnt die Verbindung mit Error 401 Unauthorized ab

Laut Stacktrace wird auch lediglich dieser Header empfangen:

public '__last_request_headers' => string 'POST /api/soap/v6 HTTP/1.1
Host: aktuell.kundeninformation.net
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.12
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 584

Kann mir jemand einen Hinweis geben, wie ich dem SoapClient einen Authorization Basic Header voranstellen kann?

Domi
15.02.2016, 12:39:54
Hi und willkommen im Forum,

du könntest versuchen mal user und pass direkt in die URL mit einzugeben:

'http://'.$sUser.':'.$sPass.'@bla.test.de/app/api';

Denke das sollte schon mal den ersten Erfolg bringen ;)

lupo72
16.02.2016, 14:59:50
Hallo,

danke für die Rückmeldung - ich habe den Fehler inzwischen selber gefunden:

Es funktioniert über die zusätzlichen Parameter "login" und "password" (s.a. php.net/soapclient (http://php.net/manual/de/soapclient.soapclient.php))

$client = new SoapClient($wsdl, array('login' => $login, 'password' => $password));

Grüße,
Lupo