php - 在 PHP 中从 WSDL 网络服务检索数据

标签 php soap wsdl soapui

首先我会说我对我正在尝试做的事情一无所知。我的 PHP 技能是 - 初学者 - 而我在网络服务方面的经验是空的。

我有一个 WSDL URL http://example.com/ws/3.1/NNE?WSDL .我想从 PHP 脚本调用 searchTargetGroup 方法,这样我就可以遍历答案并将数据保存到我的数据库中。

任何人,我不知道如何从 PHP 创建调用。 :-( 我看过 NuSOAP for PHP 以及内置的 SoapClient,但没有运气。我认为问题是我试图调用一个复杂的方法,但没有完全理解我在搞什么 Frog 。

所以我使用 SoapUI 来检索定义文件并创建一个请求,这非常有效并且我得到了我想要的所有信息。问题是,我不知道我应该如何制作一个 PHP 文件来创建与 SoapUI 完全相同的请求(从而获得正确的答案)。

SoapUI 为我生成的 XML 请求如下所示:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nne="http://example.com/ws/NNE">
    <soapenv:Header/>
    <soapenv:Body>
        <nne:searchTargetGroup soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <QuestionTargetGroup_1 xsi:type="nne:QuestionTargetGroup" xmlns:nne="http://example.com/ws/NNE">
                <companyFormCodeList xsi:type="xsd:string">10,60,80</companyFormCodeList>
                <companyStatus xsi:type="xsd:string">0</companyStatus>
                <hasPhoneOnly xsi:type="xsd:boolean">true</hasPhoneOnly>
            </QuestionTargetGroup_1>
            <int_2 xsi:type="xsd:int">500</int_2>
            <int_3 xsi:type="xsd:int">1</int_3>
            <int_4 xsi:type="xsd:int">1</int_4>
            <String_5 xsi:type="xsd:string">passstring</String_5>
        </nne:searchTargetGroup>
    </soapenv:Body>
</soapenv:Envelope>

任何人都可以在某些方面帮助我吗?最好是正确的。 :-)

我知道您无法在 URL 上进行测试,因为它受 IP 保护,但我真的很想知道如何从 PHP 文件/函数进行上述调用。

最佳答案

首先我自己是初学者,所以我不能保证答案完全正确,但我至少可以给你一些提示。

使用 SoapClient 代替 NuSoap。 SoapClient 是用 C 写的,NuSoap 是用 PHP 写的,所以 SoapClient 更快。

如果您的 WSDL 文件没有问题,那么您所要做的就是:

$client = new SoapClient("[URL to wsdl]");

之后 SoapClient 将处理剩下的事情并使 WSDL 中定义的所有过程直接可用。

$result = $client->name_of_procedure($arg1, $arg2, ...);

结果将是 stdClass 类型或包含 stdClass 类型元素的数组。

如果没有 WSDL,您将不得不自己指定所有细节、参数类型、 namespace ……并通过 __soapCall() 调用直接地。

无论哪种方式,您都可以使用 var_dump() & Co 检查 $result 的结构。

关于php - 在 PHP 中从 WSDL 网络服务检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775471/

相关文章:

php - Facebook 的 l.php

java - 当 dataFormat 为 MESSAGE 或 CXF_MESSAGE 时,在 Apache Camel 中创建 SOAP 消息

android - 哪个更好?大量 Web 服务调用(SOAP 消息)或单个 Soap 消息中的大量数据?

如果 WSDL 不可用或无效,C# Web 服务客户端将失败

java - 基于 WSDL,如何在运行时动态生成 SOAP 请求?

php - 在 Google App Engine (GAE) 中使用 zip_read 解压缩上传的文件

php - Laravel 事务回滚似乎不起作用

java - 如何解析 WSDL 文件以提取特定节点的内容

php - 形成邮政安全。确保它不是来自外部来源

PHP SOAP 传输文件