是否有可用于PHP的工具可用于根据web service生成代码以使用WSDL?类似于在Visual Studio中单击“添加Web引用”或者为Java执行相同操作的Eclipse插件。
答案 0 :(得分:86)
在PHP 5中,您可以在WSDL上使用SoapClient来调用Web服务功能。 For example:
$client = new SoapClient("some.wsdl");
和$ client现在是一个对象,它具有some.wsdl中定义的类方法。因此,如果在WSDL中有一个名为getTime的方法,那么您只需调用:
$result = $client->getTime();
结果将(显然)在$ result变量中。您可以使用__getFunctions方法返回所有可用方法的列表。
答案 1 :(得分:20)
我在wsdl2php取得了巨大的成功。它将自动为Web服务中使用的所有对象和方法创建包装类。
答案 2 :(得分:10)
我过去曾使用NuSOAP。我喜欢它,因为它只是一组可以包含的PHP文件。 Web服务器上无需安装任何内容,也无需更改配置选项。它也有WSDL支持,这是一个奖励。
答案 3 :(得分:2)
这个article解释了如何使用PHP SoapClient来调用api Web服务。
答案 4 :(得分:1)
嗯,这些功能特定于您用于以这些语言进行开发的工具。
如果(例如)您使用记事本编写代码,则不会使用这些工具。所以,也许你应该问一下你正在使用的工具的问题。
对于PHP:http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html
答案 5 :(得分:1)
我从这个网站得到了这个:http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP
Web服务的方法Add
需要两个参数:
<?php
$client = new SoapClient("http://localhost/csharp/web_service.asmx?wsdl");
print_r( $client->Add(array("a" => "5", "b" =>"2")));
?>
答案 6 :(得分:1)
假设您提供了以下内容:
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://thesite.com/">
<x:Header/>
<x:Body>
<int:authenticateLogin>
<int:LoginId>12345</int:LoginId>
</int:authenticateLogin>
</x:Body>
</x:Envelope>
和
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<authenticateLoginResponse xmlns="http://thesite.com/">
<authenticateLoginResult>
<RequestStatus>true</RequestStatus>
<UserName>003p0000006XKX3AAO</UserName>
<BearerToken>Abcdef1234567890</BearerToken>
</authenticateLoginResult>
</authenticateLoginResponse>
</s:Body>
</s:Envelope>
假设访问http://thesite.com/表示WSDL地址是: http://thesite.com/PortalIntegratorService.svc?wsdl
$client = new SoapClient('http://thesite.com/PortalIntegratorService.svc?wsdl');
$result = $client->authenticateLogin(array('LoginId' => 12345));
if (!empty($result->authenticateLoginResult->RequestStatus)
&& !empty($result->authenticateLoginResult->UserName)) {
echo 'The username is: '.$result->authenticateLoginResult->UserName;
}
如您所见,尽管可以更改LoginId值,但在PHP代码中使用XML中指定的项目。