PHP SoapClient 类型映射的行为不同

2024-01-14

我有一个 Web 服务函数,它将一组项目返回给 PHP 客户端。根据项目的数量,PHP 返回类型有所不同。如果函数返回一项,则 PHP 类型为stdClass如果函数返回多个项目,则 PHP 类型为array。无论哪种情况都应该是array。我可以做什么来实现这个目标?

Details:

A var_dump of the result from the web-service function looks like following:
  • 如果结果中有一项:
    array(3) { ["filterErg"]=> object(stdClass)#37 (1) { ["item"]=> object(stdClass)#38 (9) ...
  • 如果结果中包含多个项目:
    array(3) { ["filterErg"]=> object(stdClass)#37 (1) { ["item"]=> array(16) ...

函数的名称是getFilterWSDL 文件的相关部分是:

<types>
  <schema ...>
    <complexType name="arrayFilter">
      <sequence>
        <element name="item" type="ns1:stFilter" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
      </sequence>
    </complexType>
    ...
  </schema>
</types>

<message name="getFilterResponse">
  <part name="filterErg" type="ns1:arrayFilter"/>
  <part name="functionResult" type="xsd:int"/>
  <part name="outErr" type="xsd:string"/>
</message>

<portType name="ADServicePortType">    
  <operation name="getFilter">
    <documentation>Service definition of function ns1__getFilter</documentation>
    <input message="tns:getFilter"/>
    <output message="tns:getFilterResponse"/>
  </operation>
  ...
</portType>

<binding name="ADService" type="tns:ADServicePortType">
  <SOAP:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="getFilter">
    <SOAP:operation style="rpc" soapAction=""/>
    <input>
      <SOAP:body use="encoded" namespace="urn:ADService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    <output>
      <SOAP:body use="encoded" namespace="urn:ADService" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
  </operation>
  ...
</binding>

创建 SoapClient 时可以使用 SOAP_SINGLE_ELEMENT_ARRAYS 选项

$soapConfig = array(
    'soap_version' => SOAP_1_2,
    'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
    'trace'    => true
);
$client = new SoapClient('http://localhost:8070/Services.wsdl', $soapConfig);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP SoapClient 类型映射的行为不同 的相关文章

  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • 获取给定日期时间集的每月第一个星期一

    我需要什么 我有一个特定的日期时间列表 我想获取每个日期时间的第一个星期一 例如 假设给定的日期时间是 2013 07 05 2013 08 05 2013 09 13 etc 我想获得所有这些日期时间的第一个星期一 以便输出结果 2013
  • Magento:如何在 CMS 页面中包含 php 调用

    按照此页面的说明进行操作 http www magento cc how to use php on a cms page html http www magento cc how to use php on a cms page html
  • 在 CodeIgniter 中添加新页面

    对于我对 CodeIgniter 和 MVC 系统的无知 我提前表示歉意 我正在帮助一位家庭成员处理他们的商业网站 到目前为止 我已经能够仅通过逻辑来完成大部分所需的更改 但现在我已经走进了死胡同 我不打算继续支持他们 因为我显然不是 Co
  • use 语句顺序会影响 PHP 中的功能吗?

    我使用 PHP 的命名空间已经有一段时间了 我认为它对我的编程来说是一个很好的补充 今天早上我想知道一些关于use陈述 我想知道顺序是否use影响我的 PHP 代码的功能 根据 PHP net 使用别名引用外部完全限定名称或导入的能力是命名
  • 使用 PHP 更新 XML 节点

    我有一个 XML 文件 test xml
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么?

    计算 PHP 字符串中特定字符的所有出现次数的最有效方法是什么 用这个 echo substr count abca a will echo 2
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 为什么 asort 适用于多维数组?

    抱歉 如果这是一个非常基本的问题 我无意中发现asort http php net manual en function asort php似乎适用于多维数组 示例 PHP animals array 1 gt array name gt
  • 如何从另一个数组值中过滤数组值并返回新数组? [复制]

    这个问题在这里已经有答案了 我有两个数组 all languages and taken languages 第一个包含所有语言 例如 200 种或其他语言 第二个包含之前选择的语言 从 0 到 200 种 我需要删除所有已采用的语言 ta
  • Yii 未检测到骆驼案例操作

    伊伊正在给我404 Error如果我声明这样的操作 站点控制器 php public function actionRegisterUser 这就是我在main php label gt Register User url gt site
  • ASP.NET MVC 3 中嵌入的 PHP 站点的 IgnoreRoute

    我有一个带有嵌入式 WordPress 博客的 MVC 3 网站 以下所有 url 均通过 MVC 定向 www mysite com www mysite com aboutus www mysite com contactus 我还有一
  • 控制数据是否存在于数组中

    我在mysql中有两个不同的表 我正在使用curl从json文件中获取数据 我的第一个表名称是 tblclients 该表存储客户端数据 我的第二个表名称是 tblcustomfieldsvalues 该表使用 tblclients 表的
  • PHP 中根据相似值对数组进行分组

    我有一个具有以下结构的数组
  • PHP date() 和 strtotime() 返回错误的月份 31 日

    我在用着date and strtotime 函数在下拉列表中显示接下来的 3 个月 PHP代码 echo date m Y strtotime 0 months echo date m Y strtotime 1 months echo
  • 使用 Webmin 设置 cron 作业

    我正在尝试使用 Webmin 设置一个 Cron 作业每 5 分钟运行一次 它需要定位 php 文件并运行该文件中的 php 脚本 当我在 命令 字段中输入文件路径时 它不起作用 我只是想知道我做错了什么 以及我需要 Cron 作业运行的文
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐

  • ngx-翻译和 *ngFor

    我有这个代码 div span img alt span h4 service name h4 p service desc p div 如何对具有 3 个参数的每个服务进行翻译 在正常情况下我使用 something translate
  • 在 Keras 中,当我创建具有 N 个“单元”的有状态“LSTM”层时,我到底要配置什么?

    正常的第一个参数Dense层也是units 是该层中神经元 节点的数量 然而 标准 LSTM 单元如下所示 这是 的修改版本 了解 LSTM 网络 http colah github io posts 2015 08 Understandi
  • 使用 Lumen 获取 file_get_contents

    我将此代码放入函数 php 类 中 theFile test test xml these are in the public folder dd file get contents theFile 如果我去mydomain local t
  • 基于两个表之间的子查询的Oracle SQL更新

    我目前正在编写更新语句 以使可查询的表不断保持最新 两个表之间的架构相同 内容并不重要 STAGING ID NAME COUNT PRODUCTION ID NAME COUNT 我的更新语句如下所示 update PRODUCTION
  • C# 小数类型除法的精度在 Mono 上不同?

    decimal d1 4 0m decimal d2 40 0m decimal d d1 d2 string repr d ToString 在 Windows 上 我得到的 repr 为 0 1 在 Mono Xamarin Andro
  • 为什么未初始化的属性在课堂上公开?

    请考虑以下代码 class foo function bar this gt baz hello there f new foo f gt bar echo f gt baz hello there 为什么上面的代码有效 我的意思是我还没有
  • Oracle CASE 语句?

    我有一个存储过程 我在其中传递布尔值 例如IS ELIGIBLE 现在我希望能够编写如下查询 SELECT col1 CASE WHEN IS ELIGIBLE THEN col2 100 ELSE col2 50 END INTO OUT
  • JavaFX 导航栏和内容窗格

    我想在我的新项目中使用 JavaFX 并且想要像下面的屏幕截图所示的东西 在左侧网站上我需要一个导航栏 在右侧网站上我需要一个内容 因此 我会在左侧使用 VBox 在右侧使用 AnchorPane 或者更好的是 ScrollPane 当我单
  • Terraform:heredoc 锚点中的无效字符

    我正在尝试在中使用多行字符串provisioner remote exec 我的 Terraform 脚本块 然而每当我使用EOT文档和各种示例中概述的语法我收到一个错误 抱怨有 invalid characters in heredoc
  • 包含 json 的数据属性中的单引号

    化妆品问题 我有一个 html 元素 其中包含一些嵌入图像的可能尺寸 这些尺寸存储为 div class inside div
  • Chrome 扩展程序不发送 SameSite=Lax cookie

    我在通过弹出脚本的 chrome 扩展处理 cookie 时遇到一些问题 popup js 内容 document addEventListener DOMContentLoaded gt function cookieinfo chrom
  • Tesseract OCR:解析表格单元格

    我正在使用 cmd 中的 Tesseract OCR v4 0 0 alpha 从如下所示的表格的 png 中提取文本 我希望 Tesseract OCR 能够解析一个单元格中的内容 然后再转到下一个单元格 我不想继续 行 中的下一个单词
  • 关于 Google Directions API 中的 escape=tollroads 的问题

    我有一些关于 Google Directions API 的问题 Google Directions API 中的 escape tollroads 是否完全避开部分收费公路 或者它是否足够聪明 知道有些路线可以在部分收费公路上行驶 但实际
  • Android Studio 运行应用程序太慢

    当我运行我的应用程序时 大约需要 10 分钟才能在我的手机上显示 而且每次更改代码也需要 10 分钟 我应该怎么办 我在用Android Studio 2 0 在 android studio 中转到 文件 gt 设置 gt 构建 执行 部
  • 如果攻击者知道盐,那么它们对安全性是否毫无用处?

    假设我有一个这样设置的用户表 CREATE TABLE users id INTEGER PRIMARY KEY name TEXT hashed password TEXT salt TEXT 创建用户时 会生成随机生成的盐并将其与类似结
  • 如何在response.redirect中将列表作为参数传递

    问题1 我有两个列表 我想在下一页中访问它们 我将重定向它们 目前的结果 当我传递结果时 它在 url 中显示列表数据类型 ex System Collections Generic List1 IDataEntities ISearchR
  • Bash 命令查看 dir 中是否有文件 - 测试目录是否为空[重复]

    这个问题在这里已经有答案了 我有以下 bash 脚本 if ls Users david Desktop empty gt dev null then echo yes files else echo no files fi 如果目录中有一
  • 检测整数内的单个一位流

    我必须检查一个号码是否满足以下条件 在二进制中 所有一位必须是连续的 该数字必须至少设置一位 连续的一位可能从 MSB 开始或在 LSB 结束 因此如果该数字由单个一位流后跟零位流组成 则完全有效 反之亦然 我编写了一个代码来检查现实问题的
  • 身份视图在哪里?

    当我在 NET Core 2 1中创建新项目时 我找不到 Identity Account Manage后面的视图 它在哪里 现在如何更改页面样式 这些视图现在是预编译库的一部分 Microsoft AspNetCore Identity
  • PHP SoapClient 类型映射的行为不同

    我有一个 Web 服务函数 它将一组项目返回给 PHP 客户端 根据项目的数量 PHP 返回类型有所不同 如果函数返回一项 则 PHP 类型为stdClass如果函数返回多个项目 则 PHP 类型为array 无论哪种情况都应该是array