0

我正在尝试使用本机 php 肥皂服务器在 php 中创建一个肥皂服务。我已经准备好了 wsdl 文件。基本上有四种方法可以使用soap 服务调用。ShowRemittanceDetail 请求之一的输入soap 请求如下所示。

<soap-env:body>
    <ns1:showremittancedetailrequest>
        <username>admin</username>
        <password>pass</password>
        <refno>USA1956127848</refno>
    </ns1:showremittancedetailrequest>
</soap-env:body>

无论如何,soap 请求没有标题,我刚刚在这里展示了正文。我解析肥皂请求没有问题。响应应该是这样的

<?xml version="1.0" encoding="ISO-8859-1"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <ns2:responseType xmlns:ns2="http://tempuri.org/response">
        <code>00</code>
        <message>Transaction does not exist or is not available</message>
        <responseBody>
            <responseStr>4</responseStr>
        </responseBody>
    </ns2:responseType>
    </soapenv:Body>
</soapenv:Envelope>

这是一个特定的响应,当具有参考号的交易在服务器中不可用时生成。我已收到肥皂请求并对其进行了评估。但是我对肥皂响应的返回类型有疑问。我无法生成有效响应。肥皂服务器应该返回什么类型的响应?

我尝试过的事情:

  1. 我试过返回一个 xml 字符串。但是,soap 客户端请求会引发异常,并显示以下消息。 looks like we got no xml document.
  2. 我也尝试过SoapVar()以相同的结果返回本机 php。

  3. 我尝试返回一个在肥皂服务器的类映射中指定的对象响应。例如,对于上面的示例,我尝试返回ShowRemittanceDetailResponse具有相同结果的对象。( looks like we got no xml document)。

  4. 我试过返回一个 DomDocument Object 。在这种情况下抛出的异常是

the encoded object does not have a responseStr property.

  1. 我尝试返回一个 stdClass 对象,该对象具有与响应期望的相同字段并具有相似的结果。

请帮我。提前致谢。

4

1 回答 1

0

我找到的解决方案是返回一个SoapVar对象。我没有soapui,我用php写的客户端不正确。因此,当 php soap 客户端抛出异常时,我在验证返回的 xml 时遇到了问题。对我来说正确的方法是返回一个 SoapVar。

于 2013-12-26T07:01:45.570 回答