如何生成PHP SOAP客户端代码?

12
有没有一种方法可以从WSDL文件生成PHP Soap Client?
我的意思是像.NET中的wsdl.exe或svcutil.exe那样,生成一个类的代码,该类可以成为服务的客户端,而不是像某些工具那样。
$WSDL     = new SOAP_WSDL($wsdl_url); 
$client   = $WSDL->getProxy(); 

我的问题是,我希望PHP客户端能够与服务配合工作,即使该服务不公开其WSDL。

6个回答

17

最佳解决方案:您不必使用Composer,它将生成一个包含所有所需类及其如何调用远程方法的文件夹。 - Sami

10

5
关于示例代码有两点需要注意:首先,您需要使用require_once("SOAP/WSDL.php");引入PEAR类;其次,方法不是$WSDL->getProxyCode();而是$WSDL->generateProxyCode();。 - Stefano

8

wsdl2phpgenerator会为您提供良好的起点。 - jjwdesign
1
要获取最新版本,请前往wsdl2phpgenerator的新主页github,https://github.com/walle/wsdl2phpgenerator。还有一个值得注意的分支https://github.com/reload/wsdl2phpgenerator,试图集成我没有真正时间验证和合并的拉取请求。 - Fredrik Wallgren

4
为了帮助其他像我一样看到这篇文章,然后想:"怎样才能使用SOAP_WSDL?"的人,以下是一些步骤:
1. 打开命令行并进入您的php目录(例如,在这个示例中,我安装了XAMPP Lite); 2. 进入php目录后,运行pear.bat脚本。然后你可以通过cmd line键入以下内容: - pear -V (提供您所安装版本的版本号); - pear list; 3. 如果您键入上述内容,但未看到SOAP,则需要通过cmd line执行以下操作: - 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; 4. 现在,在安装这些软件包并再次执行"pear list"后,您应该看到列出了SOAP; 5. 如果是这样,请在PEAR目录下的SOAP中引用下载的php文件。
路径的一个示例可能是C:\xampplite\php\PEAR\SOAP。

0

我尝试使用了这里列出的所有东西。

发现另一个选择:https://github.com/mikaelcom/WsdlToPhp

与以前的优点比较:

  • 没有依赖。 对于生成器和创建的客户端都是如此。

  • 用于输入输出参数的类。

  • 用于创建的客户端的使用示例。当然,这不是非常重要。但有时非常有用。

  • 代码较少(与SOAP_WSDL相比)

缺点:

  • 答案和任何复杂的子类型都被包装到另一个包含技术信息的对象中。

感谢您详细的反馈。您能否将有关您的评论“答案和任何复杂的子类型都被包装到另一个包含技术信息的对象中”的更多详细信息发送给我,发送至contact@wsdltophp.com,这将不胜感激。谢谢。 - Mikaël DELSOL
实际上,这并不正确。在.NET中,您可以获得与服务中完全相同的对象。但是,在我的情况下,当我从.NET服务中以PHP方式获取响应时,我得到了“额外”的包装器。它们实际上存在于WSDL中,但是.NET会“知道”某些类仅用于技术需求,并在结果中将其删除。 - Kamil Gareev
谢谢,如果您有一些示例,那就太好了,否则我会搜索以避免它。 - Mikaël DELSOL

0

我使用了一个简单的 PEAR 工具 wsdl2php,它似乎已经停止更新了,但是你仍然可以在这里下载最新版本:http://sourceforge.net/projects/wsdl2php/

它需要一台安装有 PHP 5 和 PEAR 的开发机器,并且你需要用如下的 PEAR 命令进行安装:

sudo pear install wsdl2php-0.2.1-pear.tgz

接下来,您可以使用以下命令生成PHP类文件:

wsdl2php <WSDL_URL>

它生成一个扩展SoapClient的主类,以及许多其他表示请求、响应和复杂对象的类,因此在使用具有“智能感知”功能的IDE(如NetBeans)进行开发时非常有用。

我们如何在Windows上安装相同的东西? - Sajeev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接