Boa Noite,
Criei um CRM para minha empresa e agora eles querem colocar a API deles dentro do CRM como uma feature, mas eu ainda estou apredendo sobre Django e quando fala sobre arquitetura SOAP é pior ainda... Eu consegui gerar um código aqui usando zeep, mas não sei se está correto (ou se vai funcionar), já postei essa pergunta no StackOverflow e em fóruns especializados, mas até agora não tive resposta... Se alguém puder me ajudar e, se possível, me dar umas dicas de como funcionaria, eu agradeço.
Obs: Tive que censurar os nomes
from zeep import Client
client = Client('httsp://company.com/?wsdl')
element1 = client.get_element('ns0:E1')
element2 = client.get_element('ns1:E2')
element3 = client.get_element('ns2:E3')
element4 = client.get_element('ns3:E4')
element5 = client.get_element('ns4:E5')
element6 = client.get_element('ns5:E6')
element7 = client.get_element('ns6:E7')
element8 = client.get_element('ns7:E8')
element9 = client.get_element('ns8:E9')
obj1 = element1(E1 = 'A')
obj2 = element2(E2 = 'B')
...
obj9 = element9(E9 = 'I')
header = xsd.Element(
'{X/?wsdl}auth',
xsd.ComplexType([
xsd.Element(
'{X/?wsdl}username',
xsd.String(),
'{X/?wsdl}password'),
])
)
header_value = header(username='user', password='pass')
client.service.Companymethod(_soapheader={heaeder_value, obj1, obj2, ... obj9})
XML
<definitions targetNamespace="http://X/soap/X">
<types>
<xsd:schema targetNamespace="http://X/soap/X">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
<xsd:complexType name="Companymethod">
<xsd:all>
<xsd:element name="YRequest" type="tns:YRequest" minOccurs="1"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="YRequest">
<xsd:all>
<xsd:element name="E1" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="E2" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xsd:element name="E3" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="E4" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="E5" type="xsd:nonNegativeInteger" minOccurs="1" maxOccurs="1"/>
<xsd:element name="E6" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
<xsd:element name="E7" type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1"/>
<xsd:element name="E8" type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1"/>
<xsd:element name="E9" type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1"/>
</xsd:all>
</xsd:complexType>