簡體   English   中英

如何使用PHP從XML創建SOAP請求

[英]How to create SOAP request from XML with PHP

我正在嘗試創建SOAP請求,但它給了我錯誤:在嘗試對您進行身份驗證時發生了異常。 字符串引用未設置為字符串的實例。 參數名稱:s我的代碼是:

$wsdl   = "https://securedwebapp.com/api/service.asmx?WSDL"; 
$trace = true;
$exceptions = false;
$debug = true;

$client = new SoapClient($wsdl,
      array(
        'trace' => $trace,
        'exceptions' => $exceptions,
        'debug' => $debug,
      ));


    $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:kas="KashFlow">
   <soapenv:Header/>
   <soapenv:Body>
      <kas:GetInvoice>
         <kas:UserName>xxx</kas:UserName>
         <kas:Password>xxx</kas:Password>
         <kas:InvoiceNumber>184576</kas:InvoiceNumber>
      </kas:GetInvoice>
   </soapenv:Body>
</soapenv:Envelope>';
//var_dump($xml);

    $args = array(new SoapVar($xml, XSD_ANYXML)); 
    $res  = $client->__soapCall('GetInvoice', $args);
var_dump($res);
echo "<hr>Last Request";
echo "<pre>", htmlspecialchars($client->__getLastRequest()), "</pre>";

有人知道如何解決嗎? 如果我使用該請求,則工作正常:

$wsdl = 'https://securedwebapp.com/api/service.asmx?WSDL';
$trace = true;
$exceptions = false;
$debug = true;

$client = new SoapClient($wsdl,
      array(
        'trace' => $trace,
        'exceptions' => $exceptions,
        'debug' => $debug,
      ));


$params = array(
   'InvoiceNumber' =>'81217',
    'UserName' => 'xxx', 
    'Password' => 'xxx'
);

$resp = $client->GetInvoice($params);


print_r($resp);

這是帶有簡單參數的請求,但是在實際情況下,我有復雜的XML請求,我不知道如何將其形成為php對象。 這就是為什么我一開始就將其作為XML發送的原因。

如今,強烈建議使用WSDL to PHP生成器,以避免遇到這類問題。

我建議使用PackageGenerator項目,該項目允許基於WSDL生成PHP SDK。 生成的PHP SDK包含構造請求,發送請求和僅使用OOP方法處理響應所必需的全部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM