php - 使用 PHP 调用具有复杂数据类型的 SOAP Web 服务

标签 php soap wsdl

我正在尝试编写 PHP 来调用 Web 服务。使用 SoapUI,我构建了以下对服务的调用,该调用有效:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://gmo.ws.client.np.z2.com/xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <xsd:login>
         <xsd:auth>
            <xsd:password>myPwd</xsd:password>
            <xsd:userName>myUsername</xsd:userName>
            <xsd:version>1.0</xsd:version>
         </xsd:auth>
         <xsd:applicationName>wnp</xsd:applicationName>
      </xsd:login>
   </soapenv:Body>
</soapenv:Envelope>

我使用以下 PHP 来调用相同的服务:

<?php
$client = new soapclient('http://www.z2systems.com:8888/neonws/services/GMOService');

$auth_array = array(
    'auth' => array(
      'password' => 'myPwd',
      'userName' => 'myUsername',
      'version' => '1.0'
    ),
    'applicationName' => 'wnp'
 );

$login_results = $client->__soapcall('login', $auth_array);
?>

当我调用电话时,收到错误消息“正在解析 WSDL:无法找到”。

网络服务提供商的帮助不大,因此我们将不胜感激!

最佳答案

我认为您需要向 PHP 提供 WSDL url,而不是指向 HTML 错误页面的 url。尝试打开http://www.z2systems.com:8888/neonws/services/GMOService在浏览器中。

编辑:

给你的评论:尝试将你的 auth-array 包装在一个额外的数组中,如下所示:

$login_results = $client->__soapcall('login', array($auth_array));

参数必须是一个数组,并且您给出的数组是第一个参数(如果我正确理解 esdl)。

关于php - 使用 PHP 调用具有复杂数据类型的 SOAP Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911737/

相关文章:

php - 从不相关的表添加金额

python - 使用 Python 将带有附件的 XML 发送到 SOAP ws

xml - 元素中命名复杂类型和匿名复杂类型之间的区别

php - Nusoap "SOAP-ENV: Xml was empty, didn' t 解析"消息

php - 如何对mysql结果进行排序但首先显示特定结果

php - 将值插入循环内的关联数组

api - Magento 导出订单到 3PL SOAP api 问题

magento - 使用soap api 访问magento 中的图像。无法访问缩略图。需要调整图像大小

c# - 从 WCF 中的 WSDL 生成代码不断返回消息与默认值不匹配

javascript - 使用 php 动态添加表单字段