我在用 PHP 5.2.10 我正在尝试使用一个返回的网络服务 复杂数据类型 使用 标准 SOAP 扩展.

问题是 SoapClient 不会填充嵌套到其他对象/对象数组中的对象。当我调用 getUtente 方法并指定“my_unique_id”作为参数时得到的简化示例如下:

stdClass Object
(
    [getUtenteReturn] => stdClass Object
        (
            [userName] => my_unique_id
            [fieldOne] => ...
            [fieldTwo] => ...
            [utilizzatore] => stdClass Object
                ( // This is EMPTY instead of containing a series of userName's
                )

        )

)

WDSL描述的相关部分是:

<element name="getUtenteResponse">
  <complexType>
    <sequence>
      <element name="getUtenteReturn" type="tns1:Cliente"/>
    </sequence>
  </complexType>
</element>
...
<complexType name="Utilizzatore">
  <sequence>
    <element name="userName" nillable="true" type="xsd:string"/>
  </sequence>
</complexType>
...
<complexType name="Cliente">
  <complexContent>
    <extension base="tns1:Utilizzatore">
      <sequence> 
        <element name="fieldOne" nillable="true" type="xsd:string"/>
        <element name="fieldTwo" nillable="true" type="xsd:string"/>
        <element name="utilizzatore" nillable="true" type="impl:ArrayOf_tns1_Utilizzatore"/>
      </sequence>
    </extension>
  </complexContent>
</complexType>

我发现我并不是唯一遇到这个问题的人。特别是我发现 这条评论 在 PHP 官方文档中和 这个其他论坛条目 就如何解决问题给出两种不同的想法,但我无法转变这两种想法 想法 变成一个 工作解决方案:我似乎不完全理解给出的例子背后的逻辑。

如果有人能在这方面指导我,我将不胜感激:另一个网络服务上的一些工作代码将受到欢迎,但我主要追求的是真正理解问题和所提出的解决方案的逻辑(鱼道,而不是鱼!)。:)

有帮助吗?

解决方案

老问题,没有答案。我最近偶然在这篇文章中,解释该问题,并给出了解决方案:的消费用PHP SOAP的complexType web服务。

其他提示

下面是我的顶头的想法,对不起,这不是正确的答案,只是一些想法...

首先,你试图观看发送给皂服务器SOAP请求(信封)?它看起来像它应该工作?你可以看到它是怎么了?你只是得到一个错误回来,一个的SOAPFault,或错误的数据,或者什么都没有?

其次,你试图使用SoapParam类?

最后,我敢肯定,你这样做是对的,但我注意到你正在构建的对象具有用户名和fieldOne和fieldTwo并排所有的一面,但你的WSDL显示,fieldOne和fieldTwo是类Cliente的一部分(从未在你的例子示出了),而用户名应该是内部的utilizzatore阵列的,所以不宜它更像:

stdClass Object
(
    [Cliente] => stdClass Object
        (
            [fieldOne] => ...
            [fieldTwo] => ...
            [utilizzatore] => stdClass Object
                ( // This is EMPTY instead of containing a series of userName's
                )

        )

)

SoapClient类外是非常令人沮丧的我,所以不要采取任何这有什么批评,因为我只希望通过提供了思路,可以帮助您更好地了解它自己。

Mac,非常感谢您的及时回复。看看我摔倒了什么..我之前没有看过这个。因此想分享 .

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top