PHP SOAP请求属性未正确创建

时间:2013-12-11 06:53:48

标签: php xml web-services soap nusoap

我正在尝试使用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取代..请让我知道我哪里出错了。

1 个答案:

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

希望这有助于你...... :)