如何在SOAP响应中发送纯XML?

时间:2013-03-15 09:56:10

标签: php soap encoding soapserver

我正在使用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

案例2:

WSDL

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

响应编码

return new SoapVar($my_xml,XSD_STRING)

响应XML全部&lt;编码为&amp; lt;和&gt; as&amp; gt;

案例3:

WDSL

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

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

响应编码

return new SoapVar($my_xml,XSD_ANYXML)

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

案例4

与案例3相同,但编码为SOAP_ENC_OBJECT。结果将是对象。

请帮忙!我怎样才能将纯XML文本作为SOAP响应的主体?

1 个答案:

答案 0 :(得分:5)

你试过这个吗?

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

还有其他解决方案at this PHP page。 (参见'用户贡献说明'部分)