使用 SOAP 在 WCF 中传递对象列表 PHP

Passing List of Object in WCF Using SOAP PHP

如何使用 soap 在 wcf web 服务中传递对象列表 php。

在我的 wcf 网络服务中。我有这个操作合约叫。

//interface.cs
[OperationContract]
List<ResponseObj> OperationContractMethod( List<RequestObj> Request );

//RequestObj.cs
public class RequestObj {
 public string param1 {get;set;}
 public string param2 {get;set;}
...
}

在我的 php 客户中。

$this->soapClient = new SoapClient($soap_address);        

$params = array();

foreach( $array_obj as $obj){
 array_push($params, array('param1'=>$obj->param1, 'param2'=> $obj->param2));  
}

$this->soapClient->OperationContractMethod($params);

当我显示 $params 时,它看起来像这样

dd( $params );
array:13 [▼
  0 => array:2 [▼
    "param1" => "string"
    "param2" => "string"
  ]
  1 => array:2 [▶]
  2 => array:2 [▶]
  3 => array:2 [▶]
...
]

Request参数在OperationContractMethod方法中计数null

PS:顺便说一句,OperationContractMethod 在我的 WCFClient 中运行良好。

基本上我们应该包括对象的参数名称;

正确的方法是在将对象添加到数组时添加参数名称 $params["Request"](在本例中为 Request)。

应该是这样。

foreach( $array_obj as $obj){
 array_push($params["Request"], array('param1'=>$obj->param1, 'param2'=> $obj->param2));  
}

obj 列表在我们的 var_dump 中应该如下所示。

 "Request" => array:13 [▼
    0 => array:2 [▶]
    1 => array:2 [▶]
    2 => array:2 [▶]
   ...
   ]

PS。任何人,请随时添加我想念的东西