PHP SOAP 服务器响应 XML 格式

PHP SOAP Server response in XML format

我正在使用 PHP 创建 SOAP Web 服务。

这是我的代码..

SoapServer.php

    class server{

        public function RegisterComplaint($strInputXml){
            $str = "<RESULT><complaintNo>09865678</complaintNo></RESULT>";
            $arr['RegisterComplaintResult'] = trim($str);
            return $arr;
        }

    }

    $custom_wsdl = 'custom.wsdl';
    $server = new SoapServer($custom_wsdl);


    $server->setClass('server');
    $server->handle();

当我使用 Wizdler(chrome 扩展名)调用 RegisterComplaint 时,我得到以下结果:

    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.Insurer.com/webservices/">
        <SOAP-ENV:Body>
            <ns1:RegisterComplaintResponse>
                <ns1:RegisterComplaintResult>&lt;RESULT&gt;&lt;complaintNo&gt;09865678&lt;/complaintNo&gt;&lt;/RESULT&gt;</ns1:RegisterComplaintResult>
            </ns1:RegisterComplaintResponse>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

这里我想要以下格式的结果(HTML 实体的特殊字符):

    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.Insurer.com/webservices/">
        <SOAP-ENV:Body>
            <ns1:RegisterComplaintResponse>
                <ns1:RegisterComplaintResult><RESULT><complaintNo>09865678</complaintNo></RESULT></ns1:RegisterComplaintResult>
            </ns1:RegisterComplaintResponse>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

有人知道我必须更改什么才能获得所需的输出吗?

我在 $str 变量上尝试了 html_entity_decode() 和 htmlspecialchars(),但它不起作用。

作为响应的解决方案。 (已在评论中引用)

SoapServer class 等待对象作为 return 值。该对象将由服务器使用所用 wsdl 文件中的定义自动编码。如果字符串是 returned,它的实体将始终被编码。

class Server
{
    public function registerComplaint()
    {
        $registerComplaintResponse = new stdClass();
        $registerComplaintResult = new stdClass();
        $result = new \stdClass();

        $result->complaintNo = '09865678';
        $registerComplaintResult->RESULT = $result;
        $registerComplaintResponse->RegisterComplaintResult = $registerComplaintResult;

        return $registerComplaintResponse;
    }
}

所有 return 类型(复杂类型)的定义都在 wsdl 文件中定义。