首页 文章

使用PHP发送带有WSDL Soap请求的Soap Header

提问于
浏览
4

我是SOAP的新手,我正在尝试在PHP中实现一个使用ASP.NET Web服务的快速测试客户端 . Web服务依赖于包含授权参数的Soap Header .

使用WSDL时是否可以发送auth标头和soap请求?

我的代码:

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

如何在此上下文中传递auth标头?或者我需要做一个低杠杆__soapCall()传递 Headers ?另外,我在PHP中调用正确的soap调用吗?

2 回答

  • 7

    您应该能够创建标头,然后将其添加到客户端,以便为所有后续请求发送它 . 您可能需要更改名称空间参数 .

    $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));
    

相关问题