soap响应中的XML错误无效?

时间:2011-07-05 12:27:37

标签: php xml soap

这是我的xml文件

 <OTA_HotelDestinationsRQ Version="1.0">
       <POS>
        <Source>
            <UniqueId Id="login:pass" />
        </Source>
       </POS>
      <DestinationInformation LanguageCode="EN" />
</OTA_HotelDestinationsRQ>

我已将此xml转换为数组,并在php中编写了客户端请求。它将Invalid XML作为响应。请你帮助我好吗。     

$ary=array(
     "OTA_HotelDestinationsRQ"=>array("Version"=>"1.0"),
     "POS"=>array(
          "Source"=>array(
               "UniqueId"=>array("Id"=>"login:pass")
          )
     ),
     "DestinationInformation"=>array("Version"=>"EN")
);

$wsdl="http://acceptance.travelstreet.com/hotelsv3/components/Hotels_DestinationsWS.cfc?wsdl";
$client=new SoapClient($wsdl,array('trace' => 1));
try
{
     $res=$client->OTA_HotelDestinationsRQ($ary);
     //$res=$client->__call("OTA_HotelDestinationsRQ",array($ary));
}
catch (SoapFault $Exception)
{
     echo 'SoapFault Exception';
}
echo $res;
?>

1 个答案:

答案 0 :(得分:2)

您是否在请求的顶部定义了XML文档类型?

我还建议以更面向对象的方式生成SOAP请求。您可以将soap网址插入apigenerator.com并使用它生成的SOAPClient类。

然后,您可以使用Web服务中的所有参数创建一个请求类,如:

class mySOAPRequest
{
public function makeRequestObject($param1, $param2)
{
$this->param1 = $param1;
$this->param2 = $param2;
}
}

要生成实际的soap请求,您将生成一个新的mySOAPRequest对象,并将其从API Generator传递到该类的新对象,如:

$mySoapConnection = new SoapClientFromAPIGenerator();
$mySoapRequest = new mySoapRequest();

$mySoapConnection->whateverSOAPMethod($mySoapReqest->makeRequestObject($param1, $param2));

这就是我通常构建SOAP请求的方式