PHP SOAP - 添加TicketHeader

PHP SOAP - 添加TicketHeader

问题描述:

在PHP中使用SOAP API。我需要将我的票添加为TicketHeader。请求应该是这样的。PHP SOAP - 添加TicketHeader

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Header> 
    <TicketHeader xmlns="http://www.webcrm.com/"> 
     <Guid>***MY_TICKET_ID***</Guid> 
    </TicketHeader> 
    </soap12:Header> 
    <soap12:Body> 
    <ReturnAllUsers xmlns="http://www.webcrm.com/" /> 
    </soap12:Body> 
</soap12:Envelope> 

我目前有这样的代码 - 我无法申请票,我不知道NAMESPACE是什么。我知道标题是不正确的,但票据收集的起点是有效的。

$wsdlUrl = 'https://webcrmapi5.b2bsys.net/WebCrmApi.asmx?wsdl'; 
$client = new SoapClient($wsdlUrl, array("trace" => 1, "exceptions" => 1));   
$res = $client->Authenticate(array('dbnCode' => $wcrm_dbncode, 'userName' => $wcrm_user, 'password' => $wcrm_pw)); 
$ticket = $client->__getLastResponse(); 

$header = new SoapHeader("http://www.webcrm.com/", "TicketHeader", $ticket, false); 
$client->__setSoapHeaders($header); 

$users = $client->ReturnAllUsers()->ReturnAllUsersResult; 

print_r($users); 

有人可以帮忙吗?

您应该明确地使用WSDL生成器,例如PackageGenerator项目,因为与您必须发送的请求关联的生成类包含使用与要设置的数据匹配的生成类轻松设置SoapHeader的方法。

此外,它可以简化您的请求构造,请求发送以及最终响应处理。

您可以在Set service class的自动生成的PayPal Soap API的PHP SDK中有一个示例。