在mule中使用php中的SoapClient

时间:2015-01-07 11:28:31

标签: php soap mule

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

2 个答案:

答案 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脚本来使用服务,你已经拥有了所有的功能。