有没有办法从 WSDL 文件生成 PHP Soap 客户端?
我的意思是类似wsdl.exe
或svcutil.exe
在.net中的东西,它为可以成为服务客户端的类生成代码,而不是类似:
$WSDL = new SOAP_WSDL($wsdl_url);
$client = $WSDL->getProxy();
我的问题是我希望 PHP 客户端能够使用服务,即使该服务没有公开其 WSDL。
有没有办法从 WSDL 文件生成 PHP Soap 客户端?
我的意思是类似wsdl.exe
或svcutil.exe
在.net中的东西,它为可以成为服务客户端的类生成代码,而不是类似:
$WSDL = new SOAP_WSDL($wsdl_url);
$client = $WSDL->getProxy();
我的问题是我希望 PHP 客户端能够使用服务,即使该服务没有公开其 WSDL。
我发现生成器真的很有用
https://github.com/wsdl2phpgenerator/wsdl2phpgenerator
说明(来自 github):
也为网络托管的 wsdl 工作
例如
php wsdl2phpgenerator-2.3.0.phar -i http://someurl/input.wsdl -o tmp/my/directory/wsdl
您可以改用generateProxyCode
包 SOAP_WSDL ( http://pear.php.net/reference/SOAP-0.9.4/SOAP/SOAP_WSDL.html#methodgenerateProxyCode ) 方法中提供的方法 [ ] 并将其保存到文件中:
$WSDL = new SOAP_WSDL($wsdl_url);
$php = $WSDL->generateProxyCode();
file_put_contents('wsdl_proxy.php', '<?php ' . $php . ' ?>');
require 'wsdl_proxy.php';
有一个应用程序,它被称为 wsdl2phpgenerator:
http://code.google.com/p/wsdl2phpgenerator/
针对 WSDL 文件运行它,它将生成基于 WSDL 服务的类。
只是为了帮助遇到这篇文章并认为“我到底是如何使用这个 SOAP_WSDL 东西工作的?”的其他人。(和我一样)
打开命令行并进入您的 php 目录(在此示例中我安装了 XAMPP Lite)
进入 php 目录后,我运行 pear.bat 脚本。在此之后,我可以通过 cmd 行输入以下内容
pear -V (提供您的安装版本)
梨清单
如果您键入以上内容但没有看到 SOAP,则需要从 cmd 行执行以下操作:
梨安装 Net_DIME-1.0.1
梨安装 Mail_Mime-1.5.2
梨安装 Mail-1.2.0b1
梨安装 SOAP-0.12.0
现在,在您安装这些包并执行另一个“梨列表”之后,您应该会看到列出的 SOAP。
如果是这样,您可以包含对在 SOAP 下的 pear 目录中下拉的 php 文件的引用。
此路径的一个示例可能是 C:\xampplite\php\PEAR\SOAP
我使用了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 等“智能感知”的 IDE 中进行开发时非常有用。
我尝试使用此处列出的所有内容。
找到另一个选择:https ://github.com/mikaelcom/WsdlToPhp
与以往相比的优点:
没有依赖关系。 既适用于生成器,也适用于创建的客户端。
输入和输出参数的类。
用于创建的客户端的示例。这当然不是那么重要。但有时非常有用
更少的代码(与 SOAP_WSDL 相比)
缺点: