我在mule中使用以下php脚本。当我单独运行这个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运行它时,我收到以下错误。
Root异常堆栈跟踪:
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吗?如果是这样我在哪里可以找到它。请帮忙!!
答案 0 :(得分:0)
我不确定mule是否支持php扩展,但这是错误所致。您可以尝试将nusoap下载到您的项目中, 这不需要任何PHP扩展。虽然语法有点不同,但是不应该更难以适应您的代码。
对于它的价值,这是一个使用nusoap的soap请求的简单示例(取自此处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);
我希望它有所帮助。
答案 1 :(得分:0)
我知道在quercus(而不是Mule)中运行soap客户端似乎有问题。
然而,我建议不要关注它,而是要看看CXF客户端和Web服务使用者。你在Mule内部运行一个强大的开源ESB,没有必要编写一个PHP脚本来使用服务,你已经拥有了所有的功能。