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

这篇博客讨论了如何从PHP通过SOAP调用一个使用EclipseLink作为JPA提供程序的Java Web服务来更新数据库。作者指出,可能需要将PHP对象转换为数组,并传递给Java方法,而不是直接使用stdClass。提供的示例代码展示了如何在PHP中构造正确的参数数组并调用Web服务方法。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值