0

私はここでPHPのWebサービスを使用しています:

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

たとえば、を使用してテストgetListingidModule = dafda774-317d-4b5f-bb8b-33e5977dc13c、をクリックすることができますinvoke

この結果(XML)をphpで取得しようとしています。しかし、私はこれを行う方法がわかりません。

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

標準のPHPSoapClientを使用していると仮定して、

$client->__getLastRequestHeaders()

(http://www.php.net/manual/en/soapclient.getlastresponse.php)maualによると、SoapClientでトレースオプションをtrueに設定する必要もあります。

$client = new SoapClient("http://cdt33.tourinsoft.com/soft/RechercheDynamique/Syndication/controle/syndication2.asmx?wsdl", array('trace' => true));

よろしく、ヤクブ・デルダ

于 2012-07-31T16:05:33.630 に答える