首页 / 知识

如何从PHP轻松使用Web服务

2023-04-11 19:25:00

如何从PHP轻松使用Web服务

How to easily consume a web service from PHP

是否有任何适用于PHP的工具可用于生成基于WSDL使用Web服务的代码? 相当于单击Visual Studio或Eclipse插件中的"添加Web引用",这对于Java具有相同的作用。


在PHP 5中,可以在WSDL上使用SoapClient来调用Web服务功能。例如:

1
$client = new SoapClient("some.wsdl");

$ client现在是一个对象,它具有some.wsdl中定义的类方法。因此,如果WSDL中有一个名为getTime的方法,则只需调用:

1
$result = $client->getTime();

这样的结果(显然)将在$ result变量中。您可以使用__getFunctions方法返回所有可用方法的列表。


wsdl2php取得了很大的成功。它将自动为Web服务中使用的所有对象和方法创建包装器类。


我过去曾经使用过NuSOAP。我喜欢它,因为它只是可以包含的一组PHP文件。在Web服务器上没有要安装的内容,也没有要更改的配置选项。它也有WSDL支持,这是一个好处。


本文介绍了如何使用PHP SoapClient调用api Web服务。


假设提供了以下内容:

1
2
3
4
5
6
7
8
<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>

1
2
3
4
5
6
7
8
9
10
11
<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">
       
           
                <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

1
2
3
4
5
6
$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值,但在XML代码中使用了XML中指定的项目。


您好,我是从以下站点获得的:http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Web+Service+with+PHP

Web服务的方法Add带有两个参数:

1
2
3
4
5
<?php
    $client = new SoapClient("http://localhost/csharp/web_service.asmx?wsdl");

     print_r( $client->Add(array("a" =>"5","b" =>"2")));
?>

好吧,这些功能特定于您正在使用这些语言进行开发的工具。

例如,如果您使用记事本编写代码,则没有这些工具。因此,也许您应该问所用工具的问题。

对于PHP:http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html


服务工具插件单击

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢