有一个非wsdl Web服务URL。此Web服务直接在URL中使用XML格式获取一些身份验证参数:
[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访问该网址并检索城市详情(code
和name
)。
我阅读了很多关于使用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检索城市code
和name
?
答案 0 :(得分:0)
您必须使用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>