簡體   English   中英

如何使用SoapClient從非WSDL檢索數據

[英]How to retrieve data from non-WSDL using SoapClient

沒有一個非wsdl Web服務URL。 此Web服務直接在XML格式的URL中采用一些身份驗證參數:

[Snip:我使用example更改了我的實際域]

http://example.com/WSV2/StaticData.php?xml=<StaticDataRequest><Header><Code>TT4533</Code><Username>skyman211</Username><Password>ammkj43</Password></Header><Body><GetStaticData>cities</GetStaticData><ExtraParams><CountryCode>98</CountryCode></ExtraParams></Body></StaticDataRequest>

它以以下結構返回城市詳細信息:

<?xml version="1.0" encoding="UTF-8"?>
<StaticDataResponse>
   <Country code="98" />
   <Cities>
      <City code="320">
         <Name>Tehran</Name>
      </City>
      <City code="1907">
         <Name>Shiraz</Name>
      </City>
      <City code="9971">
         <Name>Bandar Abbas</Name>
      </City>
   </Cities>
</StaticDataResponse>

現在,我需要使用SoapClient訪問該URL並檢索城市詳細信息( codename )。

我讀了許多有關使用SoapClient連接到非WSDL Web服務的主題,但是我沒有成功。

這是到目前為止我嘗試過的,並且我確定它是不完整的:

$URL = 'http://example.com/WSV2/StaticData.php?xml=<StaticDataRequest><Header><Code>TT4533</Code><Username>skyman211</Username><Password>ammkj43</Password></Header><Body><GetStaticData>cities</GetStaticData><ExtraParams><CountryCode>67</CountryCode></ExtraParams></Body></StaticDataRequest>';

$client = new SoapClient(null, array(
    'location' => $URL,
    'uri'      => "http://example.com/WSV2/",
    'trace'    => 1,
    ));

$return = $client->__soapCall();

請告訴我如何通過SoapClient檢索城市codename

您必須使用file_get_contents()而不是SoapClient。 file_get_contents()檢索您需要的所有內容:

$URL = 'http://example.com/WSV2/StaticData.php?xml=<StaticDataRequest><Header><Code>TT4533</Code><Username>skyman211</Username><Password>ammkj43</Password></Header><Body><GetStaticData>cities</GetStaticData><ExtraParams><CountryCode>67</CountryCode></ExtraParams></Body></StaticDataRequest>';

$data = file_get_contents($URL);

現在, $data是一個字符串變量,其中包含Web服務檢索到的所有城市的詳細信息。

echo '<pre>' . print_r(htmlspecialchars($data), true) . '</pre>';

輸出:

<?xml version="1.0" encoding="UTF-8"?>
<StaticDataResponse>
   <Country code="98" />
   <Cities>
      <City code="320">
         <Name>Tehran</Name>
      </City>
      <City code="1907">
         <Name>Shiraz</Name>
      </City>
      <City code="9971">
         <Name>Bandar Abbas</Name>
      </City>
   </Cities>
</StaticDataResponse>

暫無
暫無

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

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