2012-02-21 9 views
3

私は実行中のWebサービス(JPAプロバイダとしてEclipseLinkを使用しています)を持っており、SOAPを使用してデータベース内のデータを更新するメソッドをPHPから呼び出したいとします。

Webサービスのメソッドのようなものに見えることがあります。PHPからSOAPを使用してPHPからJava Webサービスにオブジェクトを送信するにはどうすればよいですか?

public void updatePerson(Person p){ 
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersonLib"); 
    EntityManager em = emf.createEntityManager(); 
    if(!em.getTransaction().isActive()) { 
     em.getTransaction().begin(); 
    } 
    em.merge(p); 
    em.getTransaction().commit(); 
} 

を、私はタイプstdClassのオブジェクトを作成し、人のためのパラメータとして、それを送信する必要がありますね。私は正しい?私はドント

$client = new SoapClient("url.to.wsdl", array("trace" => 1)); 
$obj = new stdClass(); 
$obj->Person = new stdClass(); 
$obj->Person->personId = 1; 
$obj->Person->name = "Peter"; 
$client->updatePerson($obj); 

が、これはPHPからJavaへオブジェクトを送信するための正しい方法であれば(まあ、それは方法updatePerson(人を呼び出します知っている:しかし、私はそれはこれらのコード行で動作し得るドントp)はJavaアプリケーションでは、pは私がPHPで入力したデータを含んでいません)。

+0

WSDLを表示できますか?また、 '' Classmap "'オプションが 'SoapClient'コンストラクタで使われている例[here](http://www.php.net/manual/en/soapclient.soapclient.php)を調べたいかもしれません。 –

答えて

3

可能であれば、私たちにWSDLファイルを提示してください。

$client = new SoapClient("url.to.wsdl"); 
$obj = new array("personId" => 1, "name" => "Peter"); 

$client->updatePerson($obj); 

そして、それが送信する必要があります:私はPHPでのSoapClientで作業する場合、Webサービスは、オブジェクトを期待するので、代わりに次の配列を送信してみてください新しいはstdClassを作成する場合でも、

は通常、私は配列を使用します必要なデータを持つオブジェクト。

希望します。

+0

私は数日前にそれを稼働させました。しかし、私はstdClass型のオブジェクトの代わりに配列を送ることができませんでした! :-) 有難うございます! – Rox

関連する問題