5

我正在使用 PHP SoapServer 类并尝试将纯 XML 放入 SOAP 响应的正文中。

情况1:

我的 WSDL 有

<element name="getDataResponse" type="xsd:string"/>

我对响应进行编码

return new SoapVar($my_xml,XSD_ANYXML)

PHP SoapClient 说

SOAP-ERROR: Encoding: Violation of encoding rules

案例二:

WSDL

<element name="getDataResponse" type="xsd:string"/>

响应编码

return new SoapVar($my_xml,XSD_STRING)

响应 XML 将所有 < 编码为 < 和 > 作为 >

案例3:

WDSL

<element name="getDataResponse">
  <complexType>
   ... 
  </complexType>
</element>

其中 complexType 对应要返回的 XML 的结构

响应编码

return new SoapVar($my_xml,XSD_ANYXML)

现在返回类型是一个对象,而不是 XML 字符串

案例4

除了编码为 SOAP_ENC_OBJECT 外,与案例 3 相同。再次结果将是对象。

请帮忙!如何获取纯 XML 文本作为 SOAP 响应的正文?

4

1 回答 1

5

你试过这个吗?

return new SoapVar(
     '<ns1:xmlDocument>'.$my_xml.'</ns1:xmlDocument>',
     XSD_ANYXML
);

在这个 PHP 页面上还有其他解决方案。(参见“用户贡献的笔记”部分)

于 2013-03-15T10:25:40.240 回答