PHP / WSDL / SOAP: ошибка при передаче параметров - PullRequest
0 голосов
/ 17 февраля 2011

Я использую локальный WSDL для вызовов сервисов.Я хорошо передаю / извлекаю данные, когда один или несколько параметров ожидаются сервисным методом (-ами), но когда метод ожидает 2 или более параметров, он выдает ошибку.По иронии судьбы, когда я пытаюсь передать 2 или более параметров, он говорит, что он ожидает только 1. Метод createIdentity ожидает 2 параметра (processId = string & identityAttributes = объект, состоящий из свойств, найденных в коде ниже.) Я включаюошибки при передаче параметров 1 и 2.

<?php
set_time_limit(0);
require_once('nusoap.php');
require_once('BenefitSOAP.php');

$client = new SoapClient('C:\wsdl\BenefitDeterminationProcess_BenefitDialogueServiceSOAP.wsdl', array('trace' => 1));

$procID = (array)$client->start(array("prefix"=>""));

$newStringID = implode(null, $procID); //

$exchange = $client->exchangeOptions($procID);

$identityAttributes = new IdentityAttributes();
$identityAttributes->ssn = 41441414;
$identityAttributes->firstName = 'John2';
$identityAttributes->lastName = 'Doe2';
$identityAttributes->gender = 'MALE';
$identityAttributes->birthDate = NULL;    

echo "TYPE: ".gettype($newStringID);
echo "NS: ".$newStringID;

$identity = $client->establishIdentity($newStringID); //LINE 33 

//$identity = $client->establishIdentity($newStringID, $identityAttributes); OR LINE 33//establishIdentity expects 2 parameters (processId = string, identityAttributes = object)

$end = $client->stop($procID);
?>

Ошибка при передаче 1 параметра:

TYPE: stringNS: 223205

Неустранимая ошибка: UncaughtИсключение SoapFault: [HTTP] Ошибка получения заголовков http в C: \ wamp \ www \ SugarCE \ testSOAPShawn.php: 33 Трассировка стека: # 0 [внутренняя функция]: SoapClient -> _ doRequest (' _call ('createIdenti ...', Array) # 2 C: \ wamp \ www \ SugarCE \ testSOAPShawn.php (33): SoapClient-> EstabIdentity ('223205')>> # 3 {main}, брошенный в C: \ wamp \www \ SugarCE \ testSOAPShawn.php в строке 33

Ошибка при передаче 2 параметров:

TYPE: stringNS: 237506

Неустранимая ошибка: Uncaught SoapFault исключение: [soapenv: Сервер] javax.xml.ws.WebServiceException: com.ibm.websphere.sca.ServiceRuntimeException: Произошла ошибка при синтаксическом анализе собственных данных: Сообщение об ошибке: java.lang.IllegalArgumentException: Несоответствующий счетчик параметров: ожидается 1 элемент, но получено больше .. Причина: java.lang.IllegalArgumentException: Несоответствие количества параметров: ожидается 1 элемент, но получено больше .: вызвано: Произошла ошибка при синтаксическом анализе собственных данных: Сообщение об ошибке: java.lang.IllegalArgumentException: Несоответствие количества параметров: ожидается 1 элемент, но получено больше ..Причина: java.lang.IllegalArgumentException: Несоответствующий счетчик параметров: ожидал 1 элементов, но получил больше.в C: \ wamp \ www \ SugarCE \ testSOAPShawn.php: 33 Трассировка стека: # 0 [внутренняя функция]: SoapClient -> __ call ('createIdenti ...', Array) # 1 C: \ wamp \ www \ SugarCE \testSOAPShawn.php (33): SoapClient-> EstabIdentity ('237506', Object (IdentityAttributes)) # 2 {main}, брошенный в C: \ wamp \ www \ SugarCE \ testSOAPShawn.php в строке 33

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 18 февраля 2011

Ответ: поскольку WSDL содержал complexType, мне нужно было передать один параметр, который содержал и processId, и identityAttributes.Вот мой PHP-код:

$identityAttributes = new IdentityAttributes();
$identityAttributes->ssn = 41441414;
$identityAttributes->firstName = 'John2';
$identityAttributes->lastName = 'Doe2';
$identityAttributes->gender = 'MALE';
$identityAttributes->birthDate = NULL;

$temp = new stdClass();
$temp->processId = $newStringID;
$temp->identityAttributes = $identityAttributes;


echo "TYPE: ".gettype($newStringID);
echo "NS: ".$newStringID;

$identity = $client->establishIdentity($temp);

var_dump($identity);


$end = $client->stop($procID);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...