如何使用SOAP将对象从PHP发送到Java Web服务?
作者:互联网
我有一个正在运行的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);
这样就应该向对象发送所需的数据.
希望能帮助到你.
标签:soap-client,web-services,java,php,soap 来源: https://codeday.me/bug/20191201/2082801.html