PHP での SOAP 呼び出しに関する問題があります。「DoBulkOperation」という名前の Web サービスがあります。これは、何でもリストを取得し、何かを実行し、実行内容に関する情報を含むリストを返します。ここで重要なことは、リクエストの各リスト要素が、レスポンスの同じインデックスに対応する要素を持つことです。
私が得る応答はそのようなものです:
<Body>
<DoBulkOperationResponse>
<items>
<OperationResponse>
<result>17</result>
</OperationResponse>
<Error>Some error occured</Error>
<OperationResponse>
<result>18</result>
</OperationResponse>
<OperationResponse>
<result>19</result>
</OperationResponse>
<OperationResponse>
<result>20</result>
</OperationResponse>
</items>
</DoBulkOperationResponse>
</Body>
それは私の要求に対する正しい応答です。ここで、リクエストの 2 番目のリスト要素に何か問題があると言えます。
PHP SoapClient から得られるものは、私が期待したものではありません:
object(stdClass)#49 (1) {
["items"]=>
object(stdClass)#51 (2) {
["OperationResponse"]=>
array(4) {
[0]=>
object(stdClass)#53 (1) {
["customerID"]=>
int(17)
}
[1]=>
object(stdClass)#52 (1) {
["customerID"]=>
int(18)
}
[2]=>
object(stdClass)#50 (1) {
["customerID"]=>
int(19)
}
[3]=>
object(stdClass)#54 (1) {
["customerID"]=>
int(20)
}
}
["Error"]=>
string(17) "Some error occured"
}
}
要素の順序は完全に壊れています。現在、どのリクエスト要素がどのレスポンス要素につながるかを判断することは不可能です。
WSDL では、「アイテム」はシーケンスとして定義されます。
SoapClient インスタンスに応答の構造を保持させる方法はありますか?
よろしくお願いします、
マーカス