Reputation: 8730
...
<xs:complexType name="hilfsmittelattribute">
<xs:sequence>
<xs:any maxOccurs="unbounded" namespace="http://hma.ws.bswsnt.vsa/xsd" processContents="skip"/>
</xs:sequence>
</xs:complexType>
...
conn = zeep.Client(...)
data = {
....
'hilfsmittelattribute': {'koerperhaelfte': 1}
...
}
pack = conn.service.someMethod(**data)
but I get error that
TypeError: ... got an unexpected keyword argument 'koerperhaelfte'. Signature: `_value_1: ANY[]`
I read documentation from here Zeep documentation for Any
if I do:
conn.get_element('ns0:hilfsmittelattribute') # or ns1, ns2, ns3...
I get
LookupError: No element 'hilfsmittelattribute' in namespace http://ws.bswsnt.vsa/xsd. Available elements are: -
But if I write
hilfsmittelattribute_type = conn.get_type('ns2:hilfsmittelattribute')
I get the type object
( the code return )
hilfsmittelattribute_type.elements
>> [('_value_1', <Any(name=None)>)]
but if I would like to use this type object like this
hilfsmittelattribute_ = xsd.AnyObject(
hilfsmittelattribute_type, hilfsmittelattribute_type(koerperhaelfte='1'))
I get the error
TypeError: {...}hilfsmittelattribute() got an unexpected keyword argument 'koerperhaelfte'. Signature: `_value_1: ANY[]`
EDIT:
I try to create SOAP envelope by hand. If I set :
....
<hilfsmittelattribute>
<koerperhaelfte>5</koerperhaelfte>
</hilfsmittelattribute>
....
It actually works... So the problem needs to be in Zeep on handling Any type.
Upvotes: 0
Views: 375
Reputation: 8730
If anyone has still trouble with this...
The fix is to create custom etree
element
import lxml.etree as ET
koerperhaelfte_element = ET.Element("koerperhaelfte")
koerperhaelfte_element.text = "rechts"
and then use it inside json
'hilfsmittelattribute': {
"_value_1": [koerperhaelfte_element],
},
Upvotes: 0