为soap服务器php返回soap xml响应

时间:2013-12-26 05:15:16

标签: php xml soap wsdl soapserver

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

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

无论如何,soap请求没有标题,我刚刚在这里显示了正文。我解析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>

这是在服务器中没有带引用号的事务时生成的特定响应。 我收到了肥皂请求并对其进行了评估。但是我对soap响应的返回类型有问题。我无法生成有效的回复。肥皂服务器应该返回什么类型的响应?

我尝试过的事情:

  1. 我试过返回一个xml字符串。但soap客户端请求会抛出以下消息的异常。 looks like we got no xml document
  2. 我也尝试使用相同的结果来修复原生的php SoapVar()

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

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

  5. the encoded object does not have a responseStr property

    1. 我已经尝试返回一个stdClass对象,该对象具有与响应期望相同的字段,结果类似。
    2. 请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

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