2010-11-22 15 views
0

私は通信のためにPHPのデフォルトのSoapClientを使用しています。このようなデータを送信する必要があります。PHP:complexTypesでSOAPリクエストを行うには?

<payloadPublication d2p1:type="GenericPublication" > 
    ... 
</payloadPublication> 

唯一の問題は、complexType "GenericPublication"を次のコードに追加する方法です。それ以外はすべて動作しています。

$payloadPublication = array('payloadPublication'=> "subtags/data"); 
+0

データの詳細を更新することができます – wajiw

+0

オブジェクトを作成する代わりにXMLを直接使用する方法もあります。 http://www.herongyang.com/WSDL/PHP-SOAP-SoapVar-Create-Encoded-Values.html – Sharj

答えて

0

他の回答を試すことができますが、私は直接XMLを送信して問題を解決してくれました。

$にMyXML = "あなたは、SOAPリクエストのボディでを送りたいすべてのXML"。

$ xmlvar = new SoapVar($ myxml、XSD_ANYXML);

$ params-> xmlDocument =(オブジェクト)$ xmlvar;

$ save_result = $ client-> yourFunctionName($ xmlvar);

0

私はちょうど(サービスについての詳細情報は、参考になる)あなたが提供される例に基づいて、ここで推測しているが、基本的にはあなただけのこのようなものだろう:私の答えを参照してください

class MYGenericPublication { 
    public $subtags; 
    public $name; 
} 

$new_pub = new MYGenericPublication; 
$new_pub->subtags = array('tagA', 'tagB'); 
$new_pub->name = 'HiThere'; 

$client = new SoapClient('foo?wsdl', classmap=array('GenericPublication' => 'MYGenericPublication')); 
$client->doSomethingWithPublication(array('payloadPublication' => $new_pub)); 

$my_pub = $client->findPublication(array('name' => 'HiThere')); 
echo $my_pub->subtags[0]; // tagA 
echo $my_pub->name; // HiThere 
echo get_class($my_pub); // MYGenericPublication 

をここをクリックしてください:Passing user-defined types in PHP SOAP詳細は

+0

これは、.NETベースのSOAPサーバーと通信する場合は機能しません。 – Sharj

+0

多分私はここで無知です。しかし、なぜそれが.NETサーバーで動作しないのでしょうか? –

+0

多分私はここで無知だと確信していませんが、 "指定された型は抽象です:name = 'Object'" Objectは xmlを直接送信しようとしました。それは私のために働いた。 – Sharj

関連する問題