2009-02-26 5 views
3

Je suis extrêmement novice dans SOAP et j'essaie d'implémenter un client de test rapide en PHP qui consomme un service Web ASP.NET. Le service Web repose sur un en-tête de savon contenant des paramètres d'autorisation.Envoyer un en-tête de savon avec une demande de savon WSDL avec PHP

Est-il possible d'envoyer l'en-tête auth avec une demande de savon lors de l'utilisation de WSDL?

Mon 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); 
} 

Comment serait passé l'en-tête auth dans ce contexte? Ou dois-je faire un levier bas __soapCall() pour passer dans l'en-tête? Aussi, j'appelle l'appel de savon correct dans PHP?

Répondre

6

Vous devriez pouvoir créer un en-tête, puis l'ajouter au client afin qu'il soit envoyé pour toutes les demandes suivantes. Vous devrez probablement modifier le paramètre d'espace de noms.

$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 

Plus d'informations 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)); 
Questions connexes