簡體   English   中英

使用PHP SoapClient的SOAP請求

[英]SOAP Request using PHP SoapClient

我需要發送以下SOAP請求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:dat="http://touricoholidays.com/WSDestinations/2008/08/DataContracts">
<soapenv:Header>
  <dat:LoginHeader>
     <dat:username>myUserName</dat:username>
     <dat:password>myPassword</dat:password>
     <dat:culture>en_US</dat:culture>
     <dat:version>8</dat:version>
  </dat:LoginHeader>
</soapenv:Header>
<soapenv:Body>
  <dat:GetDestination>
     <dat:Destination>
        <dat:Continent>Europe</dat:Continent>
        <dat:Country>Spain</dat:Country>
        <dat:State></dat:State>
        <dat:City>Madrid</dat:City>
        <dat:Providers>
           <dat:ProviderType>Default</dat:ProviderType>
        </dat:Providers>

     </dat:Destination>
  </dat:GetDestination>
 </soapenv:Body>
</soapenv:Envelope>

我正在嘗試使用內置於SoapClient類的PHP實現此目標。 當我運行以下代碼時,它顯示“登錄失敗,請檢查用戶名和密碼”。 但是我非常確定用戶名和密碼都是正確的,因為在其他應用程序中使用的是相同的值。

我認為問題出在以下代碼中。 你能告訴我這是什么錯誤嗎?

try{

    $client     = new SoapClient($soap_url, array("trace" => 1));

    $ns = 'http://touricoholidays.com/WSDestinations/2008/08/DataContracts';
    $auth = array(
                'username' => 'myUserName',
                'password' => 'myPassword',
                'culture' => 'en_US',
                'version' => '8',
    );
    $header = new SoapHeader($ns, 'LoginHeader', $auth);
    $client->__setSoapHeaders($header);
    $res = $client->__soapCall("GetDestination", array());

    var_dump($res);
}
catch(Exception $e)
 {
      echo $e->getMessage();
 }

您應該最終使用WSDL來生成仍然使用本地SoapClient類(例如PackageGenerator項目)的php生成器。 它只是根據WSDL生成PHP SDK。 然后,您只需要使用生成的類來構造和發送您的請求。 然后,響應是使用生成的類的對象。

暫無
暫無

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

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