无法正确生成空变量

时间:2017-06-30 21:38:22

标签: php soap

Apache 2.2.32上的PHP 5.6.30

我正在尝试使用SoapClient进行调用。请求结构中的一个类具有许多属性,其中大多数必须以xsi:nil="true"的形式发送。这是一个更简单的类

class myClass {
  public $attribute1;
  public $attribute2;
  public $attribute3;
}

当我发送请求时,XML没有分配任何东西(或所有属性为null)生成如下(跳过soap-env等):

<ns1:class>
  <ns1:attribute1 xsi:nil="true">
    <ns1:attribute2 xsi:nil="true">
      <ns1:attribute3 xsi:nil="true"></ns1:attribute3>
    </ns1:attribute2>
  </ns1:attribute1>
</ns1:class>

我期待的是

<ns1:class>
  <ns1:attribute1 xsi:nil="true" />
  <ns1:attribute2 xsi:nil="true" />
  <ns1:attribute3 xsi:nil="true" />
</ns1:class>

如果我为一个值分配一个值,那么就会以这种方式生成XML:

<ns1:class>
  <ns1:attribute1 xsi:nil="true">
    <ns1:attribute2>my_value</ns1:attribute2>
    <ns1:attribute3 xsi:nil="true"></ns1:attribute3>
  </ns1:attribute1>
</ns1:class>

显然远程服务器不接受我的请求!

对这个问题的任何想法?

BTW我没有提供WSDL,因为我首先要求获得许可。

谢谢

1 个答案:

答案 0 :(得分:0)

似乎这是一个非问题,在捕捉我的回复的同时,它被浏览器解释(尝试过Safari和FireFox),我不知道为什么会产生错误的显示。使用原始数据(即通过将其写入日志文件或类似的东西)得到了正确的输出而没有这种奇怪的行为。