꼬인 spyne가있는 작은 SOAP 1.1 서버를 설정하려고 시도했지만 사용자 정의 태그 (본문), 네임 스페이스 또는 헤더를 만드는 방법을 찾지 못했습니다. 내 자신의 ProtocolBase를 만드는 것보다 더 좋은 방법이 있을까요? 나는 다음과 유사한 XML의 문자열을 손으로하는 내 자신의 프로토콜을 만들어 내가 무엇을 찾고 생산할 수spyne가있는 사용자 정의 태그
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-2">
<SOAP-ENV:Header>
<cwmp:ID SOAP-ENV:mustUnderstand="1">123456789</cwmp:ID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<cwmp:SetParameterValues>
<ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[1]">
<ParameterValueStruct>
<Name>MY.NAME</Name>
<Value xsi:type="xsd:unsignedInt">4000</Value>
</ParameterValueStruct>
</ParameterList>
<ParameterKey>Axess Update parameters</ParameterKey>
</cwmp:SetParameterValues>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
임 :
목표는 다음과 같이 비누 응답을하는 것입니다.
class spyne(ServiceBase):
isLeaf = TwistedWebResource
@rpc(AnyDict, AnyDict, _returns=Unicode)
def my_rpc(ctx, DeviceId, ParameterList):
out_document = etree.parse('data.xml')
return etree.tostring(out_document, pretty_print=True,
encoding='utf8', xml_declaration=False)
class my_protocol(XmlDocument):
mime_type = 'text/xml; charset=utf-8'
type = set(XmlDocument.type)
type.update(('soap', 'soap11'))
def __init__(self, *args, **kwargs):
super(TR_069_SOAP, self).__init__(*args, **kwargs)
def serialize(self, ctx, message):
ctx.out_document = ctx.out_object[0]
def create_out_string(self, ctx, charset=None):
ctx.out_string = [ctx.out_document]
이 작업을 수행하는 더 좋은 방법이 있는지 잘 모르겠습니다.
어떤 문서를 제작해야합니까? 모범이 있습니까? 너 무슨 짓을 한거야? 나에게 보여줄 수있는 어떤 코드? –
@BurakArslan 몇 가지 추가 정보로 내 질문을 업데이트했습니다. 어떤 도움을 주시면 감사하겠습니다. –