2017-05-31 42 views
0

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

有人可以幫忙嗎?

回答

0

您應該明確地使用WSDL生成器,例如PackageGenerator項目,因爲與您必須發送的請求關聯的生成類包含使用與要設置的數據匹配的生成類輕鬆設置SoapHeader的方法。

此外,它可以簡化您的請求構造,請求發送以及最終響應處理。

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