java - 如何使用 SOAP 将对象从 PHP 发送到 Java Web 服务?

标签 java php web-services soap soap-client

我有一个正在运行的 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 文件。

通常,当我在 PHP 中使用 SoapClient 时,即使 Web 服务需要一个对象,我也会使用数组,因此,不要创建新的 stdClass,而是尝试发送以下数组:

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

$client->updatePerson($obj);

这应该会发送带有所需数据的对象。

希望对您有所帮助。

关于java - 如何使用 SOAP 将对象从 PHP 发送到 Java Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380839/

相关文章:

java - 处理正则表达式中的嵌套括号

java - Android - 通过 TextView 将文本从一个类传递到另一个类

javascript - 谷歌地图 API 函数 getlatlong

php - AJAX更新删除表: backend works but glitch with frontend中的tr

asp.net - WCF 服务绑定(bind)设置

java - 处理时间加倍的函数存在问题

java - Selenium WebDriver 用于自动化 ReactJs 应用程序

php - 为什么 php file_info 为空文本文件返回 inode/x-empty?

web-services - CXF Web 服务错误 - javax.xml.ws.soap.SOAPFaultException : Unconnected sockets not implemented

java - REST WADL 与 SOAP