1

nusoapを使用してSOAP Web サービスに接続しています。クラスがサービスに送信する xml は、配列から構築されます。つまり、次のようになります。

$params = array("param1" => "value1", "param2" => "value1");
$client->call('HelloWorld', $params, 'namespace', 'SOAPAction');

これはうまくいきます。多次元配列は、ネストされた優れた xml メッセージも構築します。

同じ名前のタグが 2 つ必要な場合に問題が発生します。

<items>
   <item>value 1</item>
   <item>value 2</item>
</item>

$params = array("items" => array("item" => "value 1", "item" => "value 2"));

配列の 2 番目の項目が最初の項目を上書きし、次のようになります。

<items>
   <item>value 2</item>
</item>

どうすればこれを達成できますか?

4

4 に答える 4

2

問題は内部の array() にあります

$test_array = array("item" => "value 1", "item" => "value 2");

単一のキー ("item") を持つ配列を作成します。

これを試して、動作するかどうかを確認してください:

$params = array("items" => array("item" => array("value 1", "value 2")));

ただし、保証はありません...私は長い間nusoapを使用しておらず、テストするためにここにPHPをインストールしていません。

于 2008-11-12T16:10:35.440 に答える
1

配列の代わりに文字列をnusoap呼び出し関数に渡すことで、この問題を解決しました。以下のリンクを確認してください http://fundaa.com/php/solved-duplicate-tags-in-nusoap/

于 2012-02-07T12:57:54.437 に答える
1

メソッド:

$params = array('items' => array('item' => array('value1', 'value2')))
$client->call( 'action', $params );

私から作品。このリンクで説明さ れているように

たぶん、nusoap の新しいバージョンが必要ですか?

于 2009-01-02T09:14:05.123 に答える
1

あなたの中心的な問題は、無効な PHP コードを書いていることです

$x = array("items" => array("item" => "value 1", "item" => "value 2")); 
var_dump($x);

array(1) {
  ["items"]=>
  array(1) {
    ["item"]=>
    string(7) "value 2"
  }
}

と同義であるため、もちろん機能しません

 $x = array(); 
 $x['items'] = array(); 
 $x['items']['item']='value 1'; 
 $x['items']['item']='value 2'; 

もちろんうまくいきません。

あなたの最善の策は

 array("items"=>array( "value1","value2") );  

数字キーが「機能する」ことを期待するか、

 array("items"=>array("item"=>array("value1","value2"))) 

それがとても傾いている場合。

さらに

sourceforge の例を見ると、これは有効な構文であることがわかります。

$params = '<person xsi:type="tns:Person"><firstname xsi:type="xsd:string">Willi</firstname><age xsi:type="xsd:int">22</age><gender xsi:type="xsd:string">male</gender></person>';
$result = $client->call('hello', $params);

http://nusoap.cvs.sourceforge.net/viewvc/checkout/nusoap/samples/wsdlclient3b.php _ _

これは、入力ソースとしてキーなし (すなわち: 数値) 配列を使用することを示しています: http://nusoap.cvs.sourceforge.net/viewvc/ checkout /nusoap/samples/wsdlclient4.php

于 2008-11-12T16:26:03.117 に答える