最終日、ac# ソープ クライアントでデシリアライズできる有効な応答を返そうとしました。
唯一の問題は、Web サービスが文字列の配列の配列を返す場合です。
C# クライアントが受け取るエラーは次のとおりです。
The specified type was not recognized: name='errorArray', namespace='urn:https://xxxxxxxx/index.php', at <errors xmlns=''>.
PHP Nusoap を使用して WSDL を生成しています。
これは登録された関数です(私が得ているエラーは「エラー」構造にのみ関連しているため、いくつかの部分をスキップしています):
$server->register(
'createEntity',
array('requests' => 'tns:inputCreateEntity'),
array(
'return' => 'tns:returnCreateEntity',
'errors' => 'tns:createEntityErrorArray'
),
'urn:'.$nameSpace,
'urn:'.$nameSpace.'#createEntity'
);
$server->wsdl->addComplexType(
'createEntityErrorArray',
'complexType',
'array',
'all',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:errorArray[]')),
'tns:errorArray'
);
$server->wsdl->addComplexType(
'errorArray',
'complexType',
'array',
'all',
'SOAP-ENC:Array',
array(),
array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')),
'xsd:string');
これは、SOAP サーバーが返す XML エラー部分です。
<errors xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:errorArray[1]">
<item xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]">
<item xsi:type="xsd:string">GENERAL ERRORS :</item>
<item xsi:type="xsd:string">The request array must contain at least a valid array!</item>
</item>
</errors>