代码之家  ›  专栏  ›  技术社区  ›  Edo Tyler Wall

如何从PHP轻松使用Web服务

  •  56
  • Edo Tyler Wall  · 技术社区  · 18 年前

    是否有任何PHP工具可用于生成用于使用 web service 基于其 WSDL ?类似于点击VisualStudio中的“添加Web引用”或Eclipse插件,这对Java来说是一样的。

    7 回复  |  直到 8 年前
        1
  •  20
  •   pix0r    11 年前

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

        2
  •  86
  •   qasimzee    12 年前

    在php 5中,您可以使用 SoapClient 在WSDL上调用Web服务函数。 For example :

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

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

    $result = $client->getTime();
    

    结果很明显是在$result变量中。您可以使用getfunctions方法返回所有可用方法的列表。

        3
  •  10
  •   Samuel Dauzon    8 年前

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

        4
  •  2
  •   Vaibhav    18 年前

    好吧,这些特性是特定于您在这些语言中用于开发的工具的。

    如果(例如)您使用记事本编写代码,那么您将没有这些工具。所以,也许你应该为你正在使用的工具问一个问题。

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

        5
  •  2
  •   David Snabel-Caunt    15 年前

    这个 article 解释如何使用php-soapclient调用api Web服务。

        6
  •  1
  •   Jérémie Bertrand Alex Kumbhani    11 年前

    嗨,我是从这个网站上得到的: 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")));
    ?>
    
        7
  •  1
  •   Luke Wenke    10 年前

    假设提供了以下内容:

    <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;
    }
    

    如您所见,XML中指定的项在PHP代码中使用,尽管可以更改loginid值。