我正在尝试使用NUSOAP在PHP中创建SOAP请求,
require_once('lib/nusoap.php');
$client = new nusoap_client('wsdl_link', true);
我想要生成的请求的结构是:
<rootlevel att1="abc" att2="def" >
<Start>
</Start>
</rootlevel >
参数如下:
$params=array('att1'=>'abc',
'att2'=>'def',
'start'=>array(/*array defined here*/));
$result = $client->call('function_name', array('rootlevel' => $params));
但生成的请求如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4439="http://tempuri.org">
<SOAP-ENV:Body>
<rootlevel xmlns="http://site/01">
<start>
</start>
</rootlevel>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
请告诉我为什么我的属性会被xmlns取代..
编辑: 我正在通过我的wsdl: 在wsdl中,标记rootlevel被定义为ref =“tns:rootlevel”,属性在name = rootlevel下定义,这是wsdl中的其他位置。
对于某些属性,请求正常(此处标记定义为名称,属性位于此标记下)。但有些正在被xmlns取代..请让我知道我哪里出错了。
答案 0 :(得分:0)
我使用&#34;发送&#34;解决了我的问题NUSOAP的功能..在这里你不必创建一个数组和所有..请求可以XML格式本身发送如下:
$params="<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4439="http://tempuri.org">
<SOAP-ENV:Body>
<rootlevel xmlns="http://site/01">
<start>
</start>
</rootlevel>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>";
$result = $client->send($params, 'wsdl_url/function',0,$timeout);
希望这有助于你...... :)