$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);
}
答案 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);
}