有没有办法从WSDL文件生成PHP Soap客户端?
我的意思是.net中的wsdl.exe
或svcutil.exe
,它为一个可以作为服务客户端的类生成代码,而不是像:
$WSDL = new SOAP_WSDL($wsdl_url);
$client = $WSDL->getProxy();
我的问题是我希望PHP客户端能够使用服务,即使该服务没有公开其WSDL。
答案 0 :(得分:11)
我发现生成器非常有用
https://github.com/wsdl2phpgenerator/wsdl2phpgenerator
说明(来自github):
也为web托管的wsdl工作
例如
php wsdl2phpgenerator-2.3.0.phar -i http://someurl/input.wsdl -o tmp/my/directory/wsdl
答案 1 :(得分:9)
您可以使用包SOAP_WSDL(http://pear.php.net/reference/SOAP-0.9.4/SOAP/SOAP_WSDL.html#methodgenerateProxyCode)方法中提供的方法[generateProxyCode
],并将其保存到文件中:
$WSDL = new SOAP_WSDL($wsdl_url);
$php = $WSDL->generateProxyCode();
file_put_contents('wsdl_proxy.php', '<?php ' . $php . ' ?>');
require 'wsdl_proxy.php';
答案 2 :(得分:8)
有一个应用程序,它叫做wsdl2phpgenerator:
http://code.google.com/p/wsdl2phpgenerator/
针对WSDL文件运行它,它将基于WSDL服务生成类。
答案 3 :(得分:4)
只是为了帮助遇到这篇文章的其他人并且认为“我是如何使用这个SOAP_WSDL工作的?” (像我一样)
打开命令行并进入你的php目录(我在这个例子中安装了XAMPP Lite)
进入php目录后,我运行了pear.bat脚本。在此之后,我可以通过cmd行输入以下内容
pear -V(提供安装版本)
梨列表
如果键入以上内容但未看到SOAP,则需要从cmd行执行以下操作:
pear install Net_DIME-1.0.1
pear install Mail_Mime-1.5.2
pear install Mail-1.2.0b1
pear install SOAP-0.12.0
现在,在安装这些软件包并执行另一个“梨列表”后,您应该看到SOAP列出。
如果是这样,你可以在SOAP下的pear目录中包含对php文件的引用。
此路径的一个示例可能是C:\ xampplite \ php \ PEAR \ SOAP
答案 4 :(得分:0)
我使用了 wsdl2php ,一个简单的PEAR工具;似乎项目已经死了,但你仍然可以在这里下载最新版本:http://sourceforge.net/projects/wsdl2php/
它需要一台带有PHP 5和PEAR的开发机器,你必须使用这个PEAR命令安装它:
sudo pear install wsdl2php-0.2.1-pear.tgz
在此之后,您可以使用以下命令生成PHP类文件:
wsdl2php <WSDL_URL>
它生成一个扩展SoapClient的主类,以及代表请求,响应和复杂对象的许多其他类,因此在使用像NetBeans这样的“intellisense”的IDE中进行开发时非常有用。
答案 5 :(得分:0)
我试图使用此处列出的内容。
找到另一个选择:https://github.com/mikaelcom/WsdlToPhp
与之前的比较:
没有依赖关系。 用于生成器和创建的客户端。
和 out 参数的类。
使用创建的客户端的示例。 当然不是那么重要。但有时非常有用
较少的代码(与SOAP_WSDL比较)
劣势: