我需要通过SoapClient发送一个复杂的xml。
我试图通过发送带有请求的一系列参数来以“正确”的方式进行。
以下是我当前数组的示例:
$params = array("TestRequest" => array("NodeOne" => "Value1", "NodeTwo" => "Value2"));
它像这样制作一个xml:
<TestRequest>
<NodeOne>Value1</NodeOne>
<NodeTwo>Value2</NodeTwo>
</TestRequest>
但是,我需要将NS添加到“TestRequest”部分。它需要看起来像这样:
<ord:TestRequest>
<NodeOne>Value1</NodeOne>
<NodeTwo>Value2</NodeTwo>
</ord:TestRequest>
我已经把我的头发拉出来尝试我能想到的一切,搜索谷歌和堆栈无济于事。是的,我尝试过数组输入,“ord:TestRequest”。
如果有人是PHP的SoapClient大师并且可以提供帮助,我将永远感恩。
答案 0 :(得分:0)
好的,经过多次头痛......实现这一目标的最简单方法不是我喜欢的方式。
我最终手动编写了这样的XML:
$xml = '<ord:TestRequest>
<NodeOne>Value1</NodeOne>
<NodeTwo>Value2</NodeTwo>
</ord:TestRequest>';
PHP:
$dom =new DOMDocument('1.0');
try {
$dom->loadXML($xml);
$request = $dom->saveXML();
$this->xml = $request;
return true;
} catch (DOMException $e) {
$this->xml = $xml;
$this->errors++;
$this->error_msg = 'Error generating XML :' . $e;
}
我的XML的结构就像它应该制作SoapRequest一样,然后我使用了SoapClient __doRequest()方法。
重要的是,当你走这条路线时,你不能像使用wsdl一样自动生成xml,所以请确保在你的soap连接中并请求你的wsdl为null。