Мне не удается вызвать WS через DataStage с трансформером веб-службы. Серверная часть сказала мне, что запрос не выполняется из-за формата сообщения, отличного от ожидаемого.
Он ожидает что-то вроде:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://myNameSpace/">
<soapenv:Header/>
<soapenv:Body>
<ns1:mySoapAction>
<mySoapActionRequest>
<serviceContext>
<correlationId>Test</correlationId>
</serviceContext>
<myParam1>21</myParam1>
<myParam2>814</myParam2>
<myParam3>SVIL_2</myParam3>
</mySoapActionRequest>
</ns1:mySoapAction>
</soapenv:Body>
</soapenv:Envelope>
В то время как DataStage отправляет что-то вроде:
<Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<ns1:mySoapAction xmlns:ns1="http://myNameSpace/">
<mySoapActionRequest xmlns="">
<serviceContext><correlationId>Test</correlationId></serviceContext>
<myParam1>21</myParam1>
<myParam2>814</myParam2>
<myParam3>SVIL_2</myParam3>
</mySoapActionRequest>
</ns1:mySoapAction>
</Body>
</Envelope>
Это, как ни странно, происходит, даже если я использую «определяемое пользователем сообщение», пропуская точно первый пример.
Теперь я прочитал в другой ветке аналогичную проблему: Является ли конверт SOAP 1.1 без префиксов пространства имен допустимым?
И я пришел к выводу, что сервер должен быть в состоянии обработать запрос, как только он будет выполнен, но фоновые парни не могут исправитьэто единственный способ - заставить DataStage использовать ожидаемый формат.
Большое спасибо!