Я использую следующий скрипт php в mule. Когда я запускаю этот файл php отдельно (через wamp), я могу получить требуемый вывод.
<?php
$client1=new SoapClient('example/v2_soap?wsdl', array('trace' => 1, 'connection_timeout' => 120));
$username = '******';
$password = '******';
//retreive session id from login
$session = $client1->login(
array(
'username' => $username,
'apiKey' => $password,
)
);
$result= $client1->catalogProductInfo(
array(
'sessionId' => $session->result,
'productId' => 1,
)
);
print_r($result);
return $result;
?>
Но я хочу запустить следующий скрипт через mule. Поэтому, когда я запускаю его через mule, я получаю следующую ошибку.
Трассировка стека прерываний корня:
com.caucho.quercus.QuercusErrorException: eval::5: Fatal Error: 'SoapClient' is an unknown class name.
at com.caucho.quercus.env.Env.error(Env.java:4480)
at com.caucho.quercus.env.Env.error(Env.java:4399)
at com.caucho.quercus.env.Env.createErrorException(Env.java:4130)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
Он говорит, что SoapClient - неизвестный класс. В чем проблема?
Должен ли я включать здесь некоторый SoapClient? Если да, то где я могу его найти. Пожалуйста помоги!!
Я понимаю, что существует проблема с запуском мыльного клиента внутри quercus (а не Mule).
Однако вместо того, чтобы сосредоточиться на нем, я бы предложил взглянуть на клиента CXF и на пользователя веб-сервисов. Вы используете внутри Mule мощный ESB с открытым исходным кодом, нет необходимости писать скрипт php, чтобы потреблять услугу, у вас есть все, что есть функциональность.
Я не уверен, поддерживает ли mule расширение php, но это то, что кажется ошибкой. Вы можете попробовать загрузить nusoap в свой проект, который не требует расширения php. Синтаксис немного отличается, но не сложнее адаптировать ваш код.
Для чего это стоит, это простой пример запроса на мыло с использованием nusoap (взято здесь http://www.richardkmiller.com/files/msnsearch_nusoap.html):
require_once('nusoap/lib/nusoap.php');
$request = array('Request' => array(
'AppID' => 'MSN_SEARCH_API_KEY',
'Query' => 'Seinfeld',
'CultureInfo' => 'en-US',
'SafeSearch' => 'Strict',
'Flags' => '',
'Location' => '',
'Requests' => array(
'SourceRequest' => array(
'Source' => 'Web',
'Offset' => 0,
'Count' => 50,
'ResultFields' => 'All'))));
$soapClient = new soapclient("http://soap.search.msn.com/webservices.asmx?wsdl", false);
$result = $soapClient->call("Search", $request);
print_r($result);
Я надеюсь, что это помогает.