在 php 中使用 SoapClient in mule


Using SoapClient in php in 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;
?>

但是我想通过骡子运行以下脚本。因此,当我通过骡子运行它时,我收到以下错误。

根异常堆栈跟踪:

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 吗?如果是这样,我在哪里可以找到它。请帮忙!!

我不确定 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);

我希望它有所帮助。

我知道

在栎树(而不是骡子)中运行肥皂客户端似乎有问题。

但是,与其关注它,我建议看看 CXF 客户端和 Web 服务使用者。您正在Mule内部运行一个功能强大的开源ESB,无需编写php脚本来使用服务,您已经存在所有功能。