2

我正在尝试创建SoapServer,理论上看WSDL一切都应该没问题,但是我实现的服务器返回无效的响应。wsdl其中定义请求和响应的一部分:

  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="testns">
      <s:element name="serviceRequest">
        <s:complexType>
                        <s:sequence>
                                <s:element name="id" form="unqualified" type="s:string" minOccurs="0" />
                                <s:element name="result" form="unqualified" minOccurs="0" maxOccurs="unbounded">
                                        <s:complexType>
                                                <s:sequence>
                                                        <s:element name="errorCode" form="unqualified" type="s:string" minOccurs="0" />
                                                        <s:element name="errorDescription" form="unqualified" type="s:string" minOccurs="0" />
                                                        <s:element name="nativeErrorCode" form="unqualified" type="s:string" minOccurs="0" />
                                                        <s:element name="nativeErrorDescription" form="unqualified" type="s:string" minOccurs="0" />
                                                </s:sequence>
                                        </s:complexType>
                                </s:element>
                        </s:sequence>
                </s:complexType>
      </s:element>
      <s:element name="serviceresponse">
        <s:complexType>
          <s:sequence>
                        <s:element name="result" form="unqualified" minOccurs="0" maxOccurs="unbounded">
                                        <s:complexType>
                                                <s:sequence>
                                                        <s:element name="errorCode" form="unqualified" type="s:string" minOccurs="0" />
                                                        <s:element name="errorDescription" form="unqualified" type="s:string" minOccurs="0" />
                                                        <s:element name="nativeErrorCode" form="unqualified" type="s:string" minOccurs="0" />
                                                        <s:element name="nativeErrorDescription" form="unqualified" type="s:string" minOccurs="0" />
                                                </s:sequence>
                                        </s:complexType>
                                </s:element>
          </s:sequence>
        </s:complexType>
      </s:element>
    </s:schema>
  </wsdl:types>

和我在php处理程序中的函数:

function handleService($serviceRequest){
 try{
  throw new Exception("test exception",3);
 }catch (Exception $e){
  return array(array("serviceResponse"=>array(
    "result"=>array(
        "errorCode"=>"1",
        "errorDescription"=>"Error detected",
        "nativeErrorCode"=>"".$e->getCode(),
        "nativeErrorDescription"=>"".$e->getMessage()
        )
  )));
 }
}

这导致发送response如下所示:

   <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="testns">
    <SOAP-ENV:Body>
    <ns1:serviceResponse>
    <result/>
    </ns1:serviceResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

result标签是空的,但应该设置在我的服务器中描述它的数组。谁能给我一个提示我错过了什么?

4

0 回答 0