12

有没有办法从 WSDL 文件生成 PHP Soap 客户端?

我的意思是类似wsdl.exesvcutil.exe在.net中的东西,它为可以成为服务客户端的类生成代码,而不是类似:

$WSDL     = new SOAP_WSDL($wsdl_url); 
$client   = $WSDL->getProxy(); 

我的问题是我希望 PHP 客户端能够使用服务,即使该服务没有公开其 WSDL。

4

6 回答 6

16

我发现生成器真的很有用

https://github.com/wsdl2phpgenerator/wsdl2phpgenerator

说明(来自 github):

也为网络托管的 wsdl 工作

例如

php wsdl2phpgenerator-2.3.0.phar -i http://someurl/input.wsdl -o tmp/my/directory/wsdl
于 2014-04-08T10:57:04.653 回答
9

您可以改用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';
于 2009-11-01T09:50:46.370 回答
8

有一个应用程序,它被称为 wsdl2phpgenerator:

http://code.google.com/p/wsdl2phpgenerator/

针对 WSDL 文件运行它,它将生成基于 WSDL 服务的类。

于 2010-07-09T06:09:50.023 回答
4

只是为了帮助遇到这篇文章并认为“我到底是如何使用这个 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

于 2009-11-02T18:49:58.020 回答
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 等“智能感知”的 IDE 中进行开发时非常有用。

于 2014-02-01T12:57:22.840 回答
0

我尝试使用此处列出的所有内容。

找到另一个选择:https ://github.com/mikaelcom/WsdlToPhp

与以往相比的优点:

  • 没有依赖关系。 既适用于生成器,也适用于创建的客户端。

  • 输入输出参数的类。

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

  • 更少的代码(与 SOAP_WSDL 相比)

缺点:

  • 答案和任何复杂的子类型都被包装到另一个包含技术信息的对象中。
于 2014-11-13T12:19:16.177 回答