【发布时间】:2012-02-21 16:07:01
【问题描述】:
我有一个正在运行的 Web 服务(使用 EclipseLink 作为 JPA 提供程序)并且想调用使用 SOAP 从 PHP 更新数据库中数据的方法。
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();
}
从 PHP 中,我想我必须创建一个 stdClass 类型的对象并将其作为 Person 的参数发送。我对吗?但我无法使用这些代码行:
$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 的正确方法(嗯,它在 Java 应用程序中调用方法 updatePerson(Person p),但 p 不包含我输入的数据PHP)。
【问题讨论】:
-
您能向我们展示您的 WSDL 吗?此外,您可能还想查看here 示例,其中
SoapClient构造函数中使用了选项"classmap"。
标签: java php web-services soap soap-client