Внедрение WebService в соответствии с определенным WSDL. Клиент не может быть изменен. Правильно обрабатывать запрос от Клиента, но Клиент жалуется на Response из-за пространства имен в переменных.Удалить пространство имен из переменных ответа Spyne
То, что я хочу (ответ SoapUI, основанный на WSDL):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cal="http://callback.foo.com/">
<soapenv:Header/>
<soapenv:Body>
<cal:foo_statusResponse>
<result>SUCCESS</result>
<notify>Thanks!</notify>
</cal:foo_statusResponse>
</soapenv:Body>
</soapenv:Envelope>
Что я получаю (уведомление tns:
от переменных вызывает проблемы проверки):
<senv:Envelope xmlns:tns="http://callback.foo.com/" xmlns:senv="http://schemas.xmlsoap.org/soap/envelope/">
<senv:Body>
<tns:foo_statusResponse>
<tns:result>SUCCESS</tns:result>
<tns:notify>Thanks!</tns:notify>
</tns:foo_statusResponse>
</senv:Body>
</senv:Envelope>
клиента Java выбрасывает это исключение:
[com.sun.istack.SAXParseException2; lineNumber: 2; columnNumber: 162; неожиданный элемент (uri: "http://callback.foo.com/", local: "result"). Ожидаемые элементы < {} результат> < {} уведомит>] сниппет
Реализация:
class fooStatusRS(ComplexModel):
result = Unicode()
notify = Unicode()
class foo_callback(ServiceBase):
@srpc(Unicode, Unicode, Unicode, Unicode, statusbarInfo, anotherResponse,
_out_header=None,
_out_variable_names=("result", "notify"),
_returns=(Unicode, Unicode),
_out_message_name="foo_statusResponse",
_operation_name="foo_status_rq")
def foo_status(foo_id, reply, ref, status, statusbar, another):
if foo_id:
print foo_id
return fooStatusRS(result="SUCCESS", notify="Foo received!")
application.interface - устаревшая синхронизация не менее 2.10: http://spyne.io/docs/2.10/reference/application.html – blueCat
это не https://github.com/arskom/spyne/blob/master /spyne/application.py#L107 – thebat