2009-02-26 8 views
3

Ich bin SOAP extrem neu und versuche, einen schnellen Test-Client in PHP zu implementieren, der einen ASP.NET-Webdienst verwendet. Der Webdienst basiert auf einem Soap-Header, der Autorisierungsparameter enthält.Senden eines Soap-Headers mit einer WSDL-Soap-Anfrage mit PHP

Ist es möglich, den Auth-Header zusammen mit einer Soap-Anforderung zu senden, wenn Sie WSDL verwenden?

Mein Code:

php

$service = new SoapClient("http://localhost:16840/CTI.ConfigStack.WS/ATeamService.asmx?WSDL"); 
$service->AddPendingUsers($users, 3); // Example 

webservice

[SoapHeader("AuthorisationHeader")] 
[WebMethod] 
public void AddPendingUsers(List<PendingUser> users, int templateUserId) 
{ 
    ateamService.AddPendingUsers(users, templateUserId, AuthorisationHeader.UserId); 
} 

Wie würde der Auth-Header in diesem Zusammenhang übergeben werden? Oder muss ich einen niedrigen Hebel machen __soapCall(), um den Header zu übergeben? Rufe ich auch den korrekten Soap-Aufruf in PHP auf?

Antwort

6

Sie sollten in der Lage sein, einen Header zu erstellen und ihn dann dem Client hinzuzufügen, damit er für alle nachfolgenden Anforderungen gesendet wird. Sie müssen wahrscheinlich den Namespace-Parameter ändern.

$service = new SoapClient("http://localhost:16840/CTI.ConfigStack.WS/ATeamService.asmx?WSDL"); 
//      Namespace    Header Name   value must-understand 
$header = new SoapHeader('http://tempuri.org/', 'AuthorisationHeader', $value, false); 
$service->__setSoapHeaders(array($header)); 

$service->AddPendingUsers($users, 3); // Example 

Weitere Informationen here

3
$client = new SoapClient(PassportWebService); 
$apiauth =array('userName'=>HeaderName,'password'=>HeaderPassport,'ip'=>$onlineip); 

$authvalues = new SoapVar($apiauth, SOAP_ENC_OBJECT,'ReqHeader',"SoapBaseNameSpace"); 
$header = new SoapHeader("SoapBaseNameSpace","ReqHeader", $authvalues, true); 
$client->__setSoapHeaders(array($header));