在PHP中从WSDL webservice检索数据

时间:2011-07-21 11:44:34

标签: php soap wsdl soapui

3 个答案:

答案 0 :(得分:3)

首先,我自己是初学者,所以我无法保证完全正确的答案,但我至少可以给你一些提示。

使用SoapClient而不是NuSoap。 SoapClient是用C编写的,NuSoap是用PHP编写的,所以SoapClient更快。

如果你的WSDL文件没问题,那么你所要做的就是:

$client = new SoapClient("[URL to wsdl]");

之后,SoapClient将负责其余部分,并使WSDL中定义的所有过程直接可用。

$result = $client->name_of_procedure($arg1, $arg2, ...);

结果将是stdClass类型或具有stdClass类型元素的数组。

如果没有WSDL,您必须自己指定所有细节,参数类型,命名空间......以及直接通过__soapCall()调用。

无论哪种方式,您都可以使用var_dump()&检查$ result的结构。有限公司

答案 1 :(得分:1)

正如Raffael所说,你最好使用PHP SOAP EXTENSION提供的SoapClient。

测试您的服务:

首先声明一个options数组,你可以告诉你例如不要使用wsdl(它在开发环境中很有用)

$options = array(
                'soap_version'=>SOAP_1_1,
                'exceptions'=>true,
                'trace'=>1,
                'cache_wsdl'=>WSDL_CACHE_NONE
            ); 

然后从你拥有的wsdl开始构建客户端:

$client = new SoapClient("http://service.nnerhverv.dk/nne-ws/3.1/NNE?WSDL", $options);

像这样调用方法searchTargetGroup。这里的要点是tu正确构建了questionTargetGroup参数,这应该可以工作:

//build the parameters for the SearchTargetGroup
$questionTargetGroup = array (
    "companyFormCodeList" => "10,60,80",
    "companyStatus" => "0",
    "hasPhoneOnly" => "true"
);

$response = $client->searchTargetGroup($questionTargetGroup, 500, 1, 1, "passstring"); 

最后打印出您从服务中回复的回复

print_r($response);

答案 2 :(得分:0)

我写了一篇关于如何从PHP调用Serena webservices的文章。 但它可以适用于任何网络服务:http://www.geekmindsthinkalike.com/php-and-serena-web-services/

希望有所帮助