我有一个用.NET 4.0写的接受两个参数的WCF服务。一种是由User,MerchantName和Password组成的复杂类型,第二个变量是int。该服务返回第三种复杂类型。用PHP调用WCF - 变量结构
它的结构如下所示:
// *C#代码 *
public sub AccountData Log(Login LoginData, int AccountID)
{
//do stuff here
}
使用SoapClient的和删除从C#的服务INT帐户ID,我可以通过复杂的数据输入和解析通过复杂的数据输出成功。添加AccountID参数,打破肥皂呼叫。我似乎无法以WCF将接受的方式将变量复合到一个数组中。
问题是如何形成数组传递的呼叫?
我曾尝试以下:
//****Attempt one *******
$login = array('MerchantName' => 'merchantA',
'User' => 'userA',
'password' => 'passwordA');
$account = '68115'; //(also tried $account = 68115; and $account = (int)68115;)
$params = array('LoginData' => $login, 'AccountID' => $account);
$send = (object)$params; //Have tried sending as an object and not.
$client = new SoapClient($wsdl);
$client->soap_defencoding = 'UTF-8';
$result = $client->__soapCall('Log', array($send);
var_dump($send);
echo("<pre>");
var_dump($result);
最新的尝试是类变量,但特林形成到$客户打电话时我被困。
class LogVar
{
public $MerchantName;
public $User;
public $Password;
}
class AccountID
{
public $AccountID;
}
$classLogin = new LogVar();
$classLogin->MerchantName = 'merchantA';
$classLogin->User = 'userA';
$classLogin->Password = 'passwordA';
$classAccount = new AccountID();
$classAccount->AccountID = '68115';
//How to get to $client->__soapCall('Log', ???????);
P.S.我是一个.Net编码器,请善待PHP解释...另外,NuSoap看起来并不好,但它可能没有发现处理复杂类型的方法。