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.