SimpleXMLElement在__soapCall上删除了值

时间:2014-08-06 20:02:28

标签: php xml soap response

$domDocument = Hydrate($order);

$client = new SoapClient('http://10.1.208.120/api/webservice.asmx?WSDL', array('trace' => 1));

$xml = simplexml_load_string($domDocument->saveHTML());

$result = $client->SendOrder($xml);

在调试时,$ xml最终将所有值正确分配到它们应该的位置。最值得注意的是,我在Hydrate()方法中设置的DateTime值:

<ns1:OrderDate>2014-08-06T19:37:53+00:00</ns1:OrderDate>

当我发送SendOrder()时,我得到:

  

服务器无法读取请求。 - &GT; XML中存在错误   文件(2,515)。 - &GT;字符串未被识别为有效的DateTime。

我的DateTime值最终为空白:

<ns1:OrderDate/>

我对此感到非常沮丧。有谁知道发生了什么事?

编辑:

问题是我在生成DomDocument时没有使用名称空间。我只是将ns1:添加到所有元素并使用了SoapVar和__SoapCall。

$this->setSoapClient(new SoapClient( $this->getURL() .'?WSDL', array('trace' => 1)));
$this->setSoapRequest(Mage::getModel('apiorder/domdocbuilder')->Hydrate($this->getOrder())->saveHTML());
$this->setSoapBody(new SoapVar($this->getSoapRequest(), XSD_ANYXML));

try
{
    $this->setSoapResult($this->getSoapClient()->__SoapCall('SendOrder', array($this->getSoapBody())));
}
catch(SoapFault $e)
{
    $this->setSoapFault($e);
}

1 个答案:

答案 0 :(得分:0)

问题是我在生成DomDocument时没有使用名称空间。我只是将ns1:添加到所有元素并使用了SoapVar和__SoapCall。

$this->setSoapClient(new SoapClient( $this->getURL() .'?WSDL', array('trace' => 1)));
$this->setSoapRequest(Mage::getModel('apiorder/domdocbuilder')->Hydrate($this->getOrder())->saveHTML());
$this->setSoapBody(new SoapVar($this->getSoapRequest(), XSD_ANYXML));

try
{
    $this->setSoapResult($this->getSoapClient()->__SoapCall('SendOrder', array($this->getSoapBody())));
}
catch(SoapFault $e)
{
    $this->setSoapFault($e);
}
相关问题