0

我在这里使用 php 中的网络服务:

http://cdt33.tourinsoft.com/soft/RechercheDynamique/Syndication/controle/syndication2.asmx

例如getListing,您可以使用 进行测试idModule = dafda774-317d-4b5f-bb8b-33e5977dc13c,然后单击invoke

我正在尝试在 php.ini 中检索此结果(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 ?谢谢 !

4

3 回答 3

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);
?>
于 2012-07-31T14:47:03.043 回答
0

类 ABRSoapClient 扩展 SoapClient {

$result = "";

function __doRequest($request, $location, $action, $version) 
{

    $result =  parent::__doRequest($request, $location, $action, $version); 
    return $result;

}

}

不是创建 SoapClient 的对象,而是创建 ABRSoapClient 的对象,这里 $result 是来自 Web 服务的 XML 字符串。

您可以使用 $client->result; 访问该变量;

于 2012-08-01T06:29:32.503 回答
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));

问候, 雅库布·德尔达

于 2012-07-31T16:05:33.630 回答