Как я могу получить список функций сервиса UserAdmin из wso2cep-4.1.0 с помощью php и мыла?

Я пытаюсь получить список функций из службы администрирования UserAdmin из wso2cep-4.1.0 со следующим кодом:

<?php
checkWSDLfunctions();

function checkWSDLfunctions(){

$wsdl = "https://10.69.16.44:9445/services/UserAdmin?wsdl";

$paramtrs = array(
'trace'    => true,
'login'    => 'admin',
'password' => 'admin',
'keep_alive' => false
);

$client = new SoapClient($wsdl, $paramtrs);
print_r($client->__getFunctions());
}
?>

Wsdl доступен из веб-браузера, и SoapUI загружает его без проблем, я использую php 5.2.9 с apache 2.0.55, и когда я запускаю вышеупомянутый php, я получаю следующее:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://10.69.16.44:9445/services/UserAdmin?wsdl' : Start tag expected, '<' not found in C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php:15 Stack trace: #0 C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php(15): SoapClient->SoapClient('https://10.69.1...', Array) #1 C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php(2): checkWSDLfunctions() #2 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php on line 15

Я проверил другие вопросы и openssl включен.
Я также попробовал точно такой же php с wsdl из wso2cep 3.1.0, и он работает ..

Что вы предлагаете попробовать дальше?

ОБНОВИТЬ: Я нашел обходной путь для вышеупомянутой проблемы, добавив wsdl из ссылки в файл wso2.wsdl, и теперь функция __getFunctions () возвращает список функций из wsdl.

Но все же, когда я хочу вызвать простую функцию из wsdl, скажем, listUsers, я получаю эту ошибку:

Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in C:\Program Files\Apache Group\Apache2\htdocs\CARE.wso2\checkFunctions.php:18 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://10.69.1...', 'urn:listUsers', 1, 0) #1 [internal function]: SoapClient->__call('listUsers', Array) #2 C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php(18): SoapClient->listUsers() #3 C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php(2): checkWSDLfunctions() #4 {main} thrown in C:\Program Files\Apache Group\Apache2\htdocs\wso2\checkFunctions.php on line 18

Новый код PHP:

<?php
checkWSDLfunctions();

function checkWSDLfunctions(){

//$wsdl = "https://10.69.16.44:9445/services/UserAdmin?wsdl";
$wsdl = "wso2.wsdl";

$paramtrs = array(
'trace'    => true,
'login'    => 'admin',
'password' => 'admin',
'keep_alive' => false
);

$client = new SoapClient($wsdl, $paramtrs);
//print_r($client->__getFunctions());
print_r($client->listUsers());
}
?>

Я попробовал стандартное исправление тайм-аута сокета, предложенное в интернете, но ничего … возможно, я пропустил некоторые настройки в wso2cep, но я не знаю, что еще изменить там … или как вы думаете, может быть проблема здесь ?

1

Решение

После множества повторных попыток единственным решением, которое я нашел, было обновление сервера Apache и PHP. Я обновил Apache 2.4.20 и PHP 5.4.45 и теперь все работает нормально.

Я не нашел причину, но я предполагаю, что существует несовместимость между библиотеками php soap или openssl и новой версией CEP.

Надеюсь, поможет.

Если у кого-то есть лучшее объяснение, было бы здорово.

Спасибо.

0

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

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

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