【问题标题】:PHP soap - Unable to pass object as parameter of soap functionPHP soap - 无法将对象作为soap函数的参数传递
【发布时间】:2015-07-27 19:25:22
【问题描述】:

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

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

我正在尝试运行我们的一种自定义方法 (SignIn),它返回一个包含 2 个字符串(会话 ID 和站点名称)的对象。此方法需要一个参数,即自定义对象类型 (SignInDetails),该参数又包含 3 个字符串('Sitename'、'Username'、'Password')。

我的第一个类用于构建包含这些详细信息的 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 );

【问题讨论】:

    标签: php wcf soap


    【解决方案1】:

    我已经确定了问题。 Soap 期望通过关联数组传入对象,该数组带有反映参数名称的键,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      相关资源
      最近更新 更多