TypeNotFound in suds Python webservice

Accedere ai metodi e agli oggetti del webservice

In un articolo precedente avevamo visto un esempio lineare di utilizzo di suds per accedere ai webservice SOAP.

Nei webservice possono essere definiti degli oggetti ‘complessi’ magari derivati da altri linguaggi di programmazione.

Nel caso specifico che mi sono trovato ad affrontare, avevamo un oggetto creato probabilmente in c#, contenente proprietà standard e sotto oggetti contenenti liste, array e via dicendo.

Suds permette sia di interrogare tutti i metodi disponibili come avevamo visto:

from suds.client import Client

client = Client("https://www.testfe.com/test_service.asmx?WSDL")

print(client)

sia di definire a runtime l’esatto oggetto corrispondente che serve nel nostro codice in python, quindi a quel punto possiamo definirne attributi, impostarlo ed interrogarne le proprietà.

Creare la corrispondenza degli oggetti necessari al webservice

Nel caso specifico per accedere a un servizio di upload di fatturazione elettronica, dove l’oggetto si chiamava: UploadElectronicInvoiceFileRequest

UploadElectronicInvoiceFileRequest = client.factory.create('UploadElectronicInvoiceFileRequest')
UploadElectronicInvoiceFileRequest.FileName = xml.name
UploadElectronicInvoiceFileRequest.Content = encodedBytes

Il temuto TypeNotFound

Suds inoltre interroga il servizio e verifica la corripondenza del tipo di oggetti per cui se non la trova ritorna un TypeNotFound.