を作成しようとしています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
タグは空ですが、サーバー内でそれを記述している配列を設定する必要があります。誰かが私に欠けているもののヒントを教えてもらえますか?