Soap客户端在PHP中插入调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Soap客户端在PHP中插入调用相关的知识,希望对你有一定的参考价值。

希望有人可以帮助我从php调用SOAP客户端

我需要调用SOAP服务并发送服务可以插入的DTO对象

SOAP文档如下所示

public virtual resultValidation validateInvoice(
    Invoice invoice
)

invoice: 
    Type: invoiceWebService.DTO.invoice

我需要在invoice对象中传递以下“变量”

"productNameInvoice" (VALUE: "Produkt 1")
"amount" (VALUE: 500)
"type" (VALUE: 1)

我已经尝试过以下代码(我用于获取调用),但它起作用了。我想这是因为我将“变量”作为数组而不是和DTO对象(invoiceWebService.DTO.invoice)发送 - 但是可以找出要改变的内容

获取此错误:未捕获的SoapFault异常 - 非静态方法需要目标

这是我试过的代码

$client = new soapClient(...) // As I use to when getting from service (is working)

$params = array(
  "productNameInvoice"=>"Product 1",
  "amount"=>500,
  "type"=>1
);

$response = $client->__soapCall("validateInvoice", array($params))

希望可以有人帮帮我 :)

提前 - 谢谢Kim

答案

这个怎么样?

$client = new soapClient(...) 
$validateInvoice = new stdClass();
$validateInvoice->productNameInvoice = "Product 1";
$validateInvoice->amount = 500;
$validateInvoice->type = 1;
$response = $client->validateInvoice($validateInvoice);
另一答案

通过使用miknik的答案找到了解决方案

$client = new soapClient(...) 
$validateInvoice = new stdClass();
$validateInvoice->productNameInvoice = "Product 1";
$validateInvoice->amount = 500;
$validateInvoice->type = 1;

$params = array(
    "invoice" => $validateInvoice
);

$response = $client->__soapCall("validateInvoice", array($params));

以上是关于Soap客户端在PHP中插入调用的主要内容,如果未能解决你的问题,请参考以下文章

PHP soap客户端调用停止脚本

如何创建 PHP SOAP 客户端以在 SSL 下调用 WCF Web 服务?

尝试在 PHP 中使用 x.509 证书对 SOAP 调用进行数字签名

始终在soap客户端php中作为无效会话令牌获得响应

PHP SOAP 扩展 Web Service 例子

PHP使用WSDL格式Soap通信