PHP soap - 无法将对象作为soap函数

时间:2015-07-27 19:25:22

标签: php wcf soap

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

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

我试图运行我们的一个自定义方法(SignIn),它返回一个包含2个字符串的对象(sessionID& sitename)。此方法需要一个自定义对象类型的参数(SignInDetails),该参数又包含3个字符串(' Sitename','用户名','密码')。

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

  

未捕获的SoapFault异常:[a:InternalServiceFault]对象引用未设置为对象的实例

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 );

1 个答案:

答案 0 :(得分:0)

我已经确定了这个问题。 Soap期望通过关联数组传递对象,并使用反映参数名称的键,如下所示:

public function loginSessionContractData() {

    return $this->client->SignIn( array( 'signInDetails' => $this->objLoginCredentials ) );

}