SoapClient抛出了错误的版本

时间:2010-06-14 09:55:23

标签: php zend-framework

当我发送以下请求时,我收到“错误版本”例外。

<OTA_HotelGetMsgRQ xmlns="http://www.opentravel.org/OTA/2003/05"
    TimeStamp="2001-12-17T09:30:47.0Z" Version="4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Messages>
        <Message HotelCode="123" HotelName="Test Hotel" ChainCode="321"
            ReasonForRequest="Reservation Retrieval" RequestCode="Optional"
            ChainName="Test Chain" MessageType="All" StartSeqNmbr="1"
            EndSeqNmbr="10" />
    </Messages>
</OTA_HotelGetMsgRQ>

以上请求转换为zend代码

$client = new zend_soap_client(null,
        array(
                'location' => 'http://url...',
                'Uri' =>"http://www.opentravel.org/OTA/2003/05"
        )
);

$request = array(
        array('Messages'=> 
                array ('Message' => 
                        array (
                                'HotelCode' => '123',
                                'HotelName' => 'Test Hotel',
                                'ChainCode' => '321',
                                'ReasonForRequest' => 'Reservation Retrieval',
                                'RequestCode' => 'Optional',
                                'ChainName' => 'Test Chain',
                                'MessageType' => 'All',
                                'StartSeqNmbr' => '1',
                                'EndSeqNmbr' => '10'
                        )
                )
        )
);

$result = $client->OTA_HotelGetMsgRQ ($request);

以上行抛出异常'错误版本'。任何人都可以帮我解决这个问题

3 个答案:

答案 0 :(得分:1)

听起来你使用的是错误的版本;) - 您是否尝试将'soap_version'=>'1.2'(或1.1,具体取决于所需的版本)添加到soap_client的选项中?

答案 1 :(得分:1)

$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setClass('Core_Soap_Test');
$autodiscover->setUri( sprintf($this->_WSDL_URI,0) );
$autodiscover->handle();

$this->_WSDL_URI = '"http://WWW.EXAMPLE.COM/soap/index/wsdl/%s/?wsdl'

尝试上面的代码。这对我有帮助

答案 2 :(得分:0)

我也有这个问题。在我的情况下的问题是我没有传递一个预期的(并因此需要)参数而不抛弃SoapFault异常。也许这对某人有用。