2009-02-26 4 views
3

Я чрезвычайно новичок в SOAP, и я пытаюсь реализовать быстрый тестовый клиент на PHP, который использует веб-службу ASP.NET. Веб-служба основывается на заголовке Soap, который содержит параметры авторизации.Отправка заголовка мыла с помощью запроса WSDL Soap с PHP

Возможно ли отправить заголовок auth вместе с запросом на мыло при использовании WSDL?

Мой код:

PHP

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

вебсервис

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

Как заголовок аутентификации передается в этом контексте? Или мне нужно сделать низкий рычаг __soapCall() для передачи в заголовке? Кроме того, я вызываю правильный вызов мыла в PHP?

ответ

6

Вы должны иметь возможность создать заголовок, а затем добавить его клиенту, чтобы он был отправлен для всех последующих запросов. Вам, вероятно, потребуется изменить параметр пространства имен.

$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 

Подробнее 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)); 
Смежные вопросы