Мне поручили создать службу SOAP для одного из наших партнеров. Партнер предоставил мне WSDL в качестве спецификации, которую я должен реализовать на нашей стороне. Я уже добился некоторого прогресса, но теперь я уперся в стену.
Как я могу это реализовать (проблема с строкой <ns:Criteria id="?">
)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://...">
<soapenv:Header/>
<soapenv:Body>
<ns:SearchRequest>
<!--1 or more repetitions:-->
<ns:Criteria id="?">
<!--Optional:-->
<ns:LocationIds>?</ns:LocationIds>
<ns:Type>?</ns:Type>
</ns:Criteria>
<ns:Channel>?</ns:Channel>
<!--You may enter ANY elements at this point-->
</ns:SearchRequest>
</soapenv:Body>
</soapenv:Envelope>
Мой код Python, который предоставляет Службу, в настоящее время выглядит следующим образом:
class CriteriaModel(ComplexModel):
id = String
LocationIds = String
Type = String
class SomeService(Service):
@rpc(
Array(CriteriaModel, wrapped=False),
_returns=Container,
_in_message_name='SearchRequest',
_out_message_name='SearchResponse'
)
def Search(ctx, criterias):
# pass
# TODO: implement the logic
Тем не менее, при таком подходе я получаю такой результат:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ava="http://..." xmlns:book="...">
<soapenv:Header/>
<soapenv:Body>
<ava:SearchRequest>
<!--Zero or more repetitions:-->
<ava:Criteria>
<!--Optional:-->
<book:id>?</book:id>
<book:LocationIds>?</book:LocationIds>
<book:Type>?</book:Type>
</ava:Criteria>
</ava:SearchRequest>
</soapenv:Body>
</soapenv:Envelope>
Это пользовательская модель, которую я должен реализовать здесь?
Заранее большое спасибо!