无法传递对象作为soap函数的参数


PHP soap - Unable to pass object as parameter of soap function

我正在尝试使用PHP SoapClient与WCF4服务进行交互。

我已经成功创建了客户端对象并连接。我可以使用->getFunctions(), ->getTypes()列出函数和类型。

我试图运行我们的自定义方法(SignIn)之一,它返回一个包含2个字符串的对象(sessionID &sitename)。这个方法需要一个参数,它是一个自定义对象类型(SignInDetails),它依次包含3个字符串('Sitename', 'Username', 'Password')。

我的第一个类用于构建包含这些细节的SignInDetails对象。第二个类运行我们的自定义方法,并将对象作为参数传递,但是方法总是响应:

Uncaught SoapFault exception: [a:InternalServiceFault] Object reference not set to an instance of Object

class clsLoginCredentials {
    public $Sitename = null;
    public $Username = null;
    public $Password = null;
    public function __construct() {
        $this->Sitename = 'test';
        $this->Username = 'test';
        $this->Password = 'test';
    }
}

class clsloginSession {
    private $client = null;
    private $objLoginCredentials = null;
    public function __construct() {
        $this->objLoginCredentials = new clsLoginCredentials;
        $this->client = getClient();
    }
    public function loginSessionContractData() {
        return $this->client->SignIn( $this->objLoginCredentials );
    }
}
$testSession = new clsloginSession;
$testSessionData = $testSession->loginSessionContractData();
var_dump( $testSessionData );

我已经发现了这个问题。Soap期望通过一个带有键的关联数组传入对象,该键反映如下参数名称:

public function loginSessionContractData() {
    return $this->client->SignIn( array( 'signInDetails' => $this->objLoginCredentials ) );
}