wcf — PHP soap — Невозможно передать объект как параметр функции soap

Я пытаюсь взаимодействовать со службой WCF4, используя PHP SoapClient.

Я успешно создал объект клиента и подключился. Я могу перечислить функции и типы, используя -> getFunctions (), -> getTypes ().

Я пытаюсь запустить один из наших пользовательских методов (SignIn), который возвращает объект, содержащий 2 строки (sessionID & Название сайта). Этот метод требует один параметр, который является пользовательским типом объекта (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 );

1

Решение

Я определил проблему. Soap ожидает, что объект будет передан через связанный массив с ключом, который отражает имя параметра, как показано ниже:

public function loginSessionContractData() {

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

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]