Ранее я использовал boxcarring в wso2dss 3.2.2 для вызова нескольких операций, и он работал без проблем.
Однако после перехода на wso2ei я заметил, что boxcarring больше не работает, и вместо этого я должен использовать новую функцию Request Box.
Я попытался запросить окно, и он работает нормально, без проблем, попробуйте его инструмент. Когда я выбираю поле запроса в списке операций в инструменте «пробуй это», он добавляет все мои операции в тело запроса, но я могу удалить те, которые мне не нужны, и запустить его только с теми операциями, которые мне нужны, и он работает нормально.
Однако теперь у меня есть проблема, делающая то же самое из php с мыльными вызовами wsdl …
Я делаю мыльный вызов wsdl, используя сгенерированный сервис wsdl. Когда я хочу использовать окно запроса, требуется, чтобы я прошел все операции с окном запроса. Но мне нужно использовать только две операции.
Если я не пропускаю все операции, я получаю следующую ошибку:
SOAP-ERROR: Encoding: object has no 'missing_operation_in_soap_call' property
Когда я проверяю сгенерированный файл wsdl службы, в нем есть все операции, перечисленные в request_box с minoccurs = 0, как в следующем примере:
<xs:element name="request_box">
<xs:complexType>
<xs:all minOccurs="0">
<xs:element ref="ns0:operaion1"/>
<xs:element ref="ns0:operaion2"/>
<xs:element ref="ns0:operaion3"/>
<xs:element ref="ns0:operaion4"/>
<xs:element ref="ns0:operaion5"/>
</xs:all>
</xs:complexType>
</xs:element>
Я хочу использовать автоматически сгенерированный сервис wsdl для мыльных вызовов и иметь возможность использовать окно запроса с несколькими выборочными операциями. В одном случае мне может понадобиться использовать окно запроса для operaion1 и operation2, в то время как в другом случае мне может понадобиться использовать окно запроса для operation3 и operation4.
Как правильно достичь этого? Можно ли вообще использовать автоматически сгенерированный сервис wsdl в мыльном вызове php wsdl?
Редактировать:
Я вижу, если я добавлю вручную minOccurs="0"
для каждого элемента операции в xml операции становятся необязательными, и проблема решается.
<xs:element name="request_box">
<xs:complexType>
<xs:all minOccurs="0">
<xs:element ref="ns0:operaion1" minOccurs="0"/>
<xs:element ref="ns0:operaion2" minOccurs="0"/>
<xs:element ref="ns0:operaion3" minOccurs="0"/>
<xs:element ref="ns0:operaion4" minOccurs="0"/>
<xs:element ref="ns0:operaion5" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
Есть ли какие-либо настройки в wso2ei, чтобы он автоматически генерировал xml таким образом для request_box?
Задача ещё не решена.
Других решений пока нет …