我在php中使用了一个web服务:
http://cdt33.tourinsoft.com/soft/RechercheDynamique/Syndication/controle/syndication2.asmx
您可以使用getListing
测试idModule = dafda774-317d-4b5f-bb8b-33e5977dc13c
示例,然后点击invoke
我正在尝试在php中检索此结果(XML)。但我不知道该怎么做。
如果我使用getListing:
$client = new SoapClient("http://cdt33.tourinsoft.com/soft/RechercheDynamique/Syndication/controle/syndication2.asmx?wsdl");
echo "GET LISTING";
$getListing = $client->getListing(
array (
'idModule' => "dafda774-317d-4b5f-bb8b-33e5977dc13c"));
echo("<pre>");
print_r($getListing);
echo("</pre>");
结果是这样的:
stdClass Object
(
[getListingResult] => stdClass Object
(
[schema] =>
[any] =>
HOTAQU03301V3EZB2005-06-29T00:00:00.0000000+02:002012-06-28T14:43:44.0000000+02:0074HOTHôtellerie1e9eb500-e0c9-4a53-b6a5-0b36faa63ed4true 2 étoiles Français www.hotel-lenovel.com +33 5 57 52 26 47 7 oui En centre ville$ Au bord de la mer Ascenseur$ Salon 22 -1.164866 Au coeur d'Arcachon, à deux pas de la gare, du théâtre de l'Olympia et de l'Office du Tourisme, le Novel bénéficie d'une situation privilégiée. Les chambres sont chaleureuses et douillettes pour un séjour....... ETC
我如何解读XML?谢谢你!
答案 0 :(得分:1)
这是尝试,运行它并检查页面的源代码,它应该包含xml文件。 SOAP只是一种做事的奇特方式。
<?php
function smartpost($type,$host,$port='80',$path='/',$data='') {
$d="";
$str="";
$_err = 'lib sockets::'.__FUNCTION__.'(): ';
switch($type) { case 'http': $type = ''; case 'ssl': continue; default: die($_err.'bad $type'); } if(!ctype_digit($port)) die($_err.'bad port');
if(!empty($data)) foreach($data AS $k => $v) $str .= urlencode($k).'='.urlencode($v).'&'; $str = substr($str,0,-1);
$fp = fsockopen($host,$port,$errno,$errstr,$timeout=30);
if(!$fp) die($_err.$errstr.$errno); else {
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($str)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $str."\r\n\r\n");
while(!feof($fp)) $d .= fgets($fp,4096);
fclose($fp);
$result = explode("\r\n\r\n", $d, 2);
$header = isset($result[0]) ? $result[0] : '';
$content = isset($result[1]) ? $result[1] : '';
} return array($header, $content);
}
list($header, $content) = smartpost('http','cdt33.tourinsoft.com','80','/soft/RechercheDynamique/Syndication/controle/syndication2.asmx/getListingByIDs',array('idModule'=>'dafda774-317d-4b5f-bb8b-33e5977dc13c','ObjetTourCode' => '','IDs' => ''));
print($content);
?>
答案 1 :(得分:0)
假设您使用的是标准PHP SoapClient,请尝试使用
$client->__getLastRequestHeaders()
(http://www.php.net/manual/en/soapclient.getlastresponse.php) 根据maual,你还应该在SoapClient上将trace选项设置为true:
$client = new SoapClient("http://cdt33.tourinsoft.com/soft/RechercheDynamique/Syndication/controle/syndication2.asmx?wsdl", array('trace' => true));
此致,Jakub Derda
答案 2 :(得分:0)
类ABRSoapClient扩展了SoapClient {
$result = "";
function __doRequest($request, $location, $action, $version)
{
$result = parent::__doRequest($request, $location, $action, $version);
return $result;
}
}
而不是创建SoapClient的对象,创建ABRSoapClient的对象,这里$ result是来自Web-Service的XML字符串。
您可以使用$ client-&gt; result;
访问该变量