mam WSDL, który zawiera kompleks typ tak:Jak używać typu złożonego z WSDL z zeep w Pythonie
<xsd:complexType name="string_array">
<xsd:complexContent>
<xsd:restriction base="SOAP-ENC:Array">
<xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
zdecydowałem się użyć zeep dla klienta mydła i chcą korzystać z tego wpisz jako parametr jednej z innych metod przywoływanych w pliku WSDL. Nie mogę się jednak domyślić, jak używać tego typu. Kiedy spojrzałem przez documentation na temat korzystania z pewnych struktur danych przywołanych w WSDL, to mówi się stosowanie metody client.get_type()
, więc zrobiłem następujące:
wsdl = "https://wsdl.location.com/?wsdl"
client = Client(wsdl=wsdl)
string_array = client.get_type('tns:string_array')
string_array('some value')
client.service.method(string_array)
To daje błąd TypeError: argument of type 'string_array' is not iterable
. Próbowałem też wiele odmian, że jak próbuje użyć słownika tak:
client.service.method(param_name=['some value'])
co daje błąd
ValueError: Error while create XML for complexType '{https://wsdl.location.com/?wsdl}string_array': Expected instance of type <class 'zeep.objects.string_array'>, received <class 'str'> instead.`
Jeśli ktoś wie, jak użyć powyższego typu z WSDL z zeep , Byłabym wdzięczna. Dzięki.
Czy udało Ci się rozwiązać swój problem? W tej chwili mam podobny problem. – JohnnyQ
Przepraszam, ja nie. Ponieważ SOAP nie jest używany w moim produkcie tak często, nie było to warte czasu na rozwiązanie. Życzę ci powodzenia. – user197674