2009-06-10 4 views
4

との応答私はNuSOAP Webサーバをしました: ...NuSOAPと配列

$server->register('getMembersEvents',  
     array('date' => 'xsd:string'),      
     array('Events' => 'tns:Events'), 
     'urn:my',    
     false,       
     'rpc',       
     false,       
     'Description'    
    ); 

    $server->wsdl->addComplexType(
     'Events', 
     'complexType', 
     'array', 
     '', 
     'SOAP-ENC:Array', 
     array('Event' =>array ('name' => 'Event', 'type' => 'tns:Event')), 
     array(
      'Event' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Event[]') 
     ), 
     'tns:Event' 
    ); 

$server->wsdl->addComplexType(
    'Event', 
    'complexType', 
    'struct', 
    'all', 
    '', 
    array(
     'field1' => array('name' => 'MemberNumber', 'type' => 'xsd:int'), 
       // ... 
     'fieldN' => array('name' => 'WebMemberID', 'type' => 'xsd:int') 
    ) 
); 

Everytingが正常に動作しますが、応答は以下のように思える:私は「アイテムの名前を変更する方法タクシー

<SOAP-ENV:Body> 
    <ns1:getMembersEventsResponse xmlns:ns1="urn:eliza"> 
     <Events xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Event[2]"> 
      <item xsi:type="tns:Event"> 
       <field1 xsi:type="xsd:int">123</field1> 
        ... 
       <fieldN xsi:type="xsd:int">123</fieldN> 
      </item> 
      <item xsi:type="tns:Event"> 
       <field1 xsi:type="xsd:int">123</field1> 
        ... 
       <fieldN xsi:type="xsd:int">123</fieldN> 
      </item> 
     </Events> 
     </ns1:getMembersEventsResponse> 
    </SOAP-ENV:Body> 

"?私はイベント - >イベントノード構造を持たなければならない。

答えて

4

私は型クラスのパラメータの代わりに「のcomplexType」の「要素」を使用し、この

$server->wsdl->addComplexType(
'Event', 
'element', 
'struct', 
'all', 
'', 
array(
    'field1' => array('name' => 'MemberNumber', 'type' => 'xsd:int'), 
      // ... 
    'fieldN' => array('name' => 'WebMemberID', 'type' => 'xsd:int') 
)); 

を使用してこの問題を解決しました。

2

この問題はv1.123 2010/04/26 20:15:08 nusoap libで解決しました。

コメントライン6136:

$contents .= $this->serializeType('item', $typeDef['arrayType'], $v, $use); 

そして、このコードを追加します。私のために

$tag = end(explode(":" , $typeDef['arrayType'])); 
$tag = $tag==""?'item':$tag; 
$contents .= $this->serializeType($tag, $typeDef['arrayType'], $v, $use); 

作品! 希望が助けます!