Я пытаюсь создать 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
тег пуст, но должен быть установлен массив, который описывает его внутри моего сервера. Может ли кто-нибудь дать мне подсказку, что мне не хватает?
Задача ещё не решена.
Других решений пока нет …