Ogni chiamata restituisce un WebServiceResponse (ImportMulti un WebServiceMultiResponse), anche in caso di errore. Leggi sempre prima lo stato e l'elenco degli errori, poi i dati.
I campi di WebServiceResponse
| Campo | Tipo | A cosa serve |
|---|
Status | Testo | Esito della chiamata: vedi la tabella qui sotto. |
RequestDataOperation | Intero | L'operazione richiesta, ripetuta. |
RequestSQLFilter | Testo | Il filtro richiesto, ripetuto. |
ResponseGuidPC | Testo | La postazione della richiesta, ripetuta. |
TypeObject | Intero | Il tipo di dato della richiesta. |
ResponseString | Testo | Messaggio del server; in caso di rifiuto è il motivo. |
LastSQLExecute | Testo | L'ultima istruzione eseguita sul database: utile per capire filtri e letture. |
ErrorList | Elenco di WebServiceError | Gli errori, uno per record scartato o per motivo di rifiuto. |
IsDatabaseReopen | Vero/falso | Sempre vero; mantenuto per compatibilità. |
ObjectList<Classe> | Elenco | Per QUERY i record letti, nella lista del tipo. Dopo la scrittura di Immagini degli articoli e File degli articoli un elemento per ogni record inviato, nello stesso ordine, con l'indirizzo pubblico del file salvato in URLExportFoto (vuoto se il file non è stato salvato). |
ObjectListCounting | Elenco di Counting | Con Counting il numero dei record in [0].Number. |
I valori di Status
| Status | Quando | Che cosa fare |
|---|
OK | Tutto eseguito. | Prosegui. |
ALERT | Uno o più record scartati in scrittura o cancellazione; in ImportMulti, conferme non registrate. | Leggi ErrorList, correggi e rinvia i soli record in errore. |
WARNING | ImportMulti: almeno una delle letture ha avuto un problema. | Controlla lo stato di ogni elemento di Responses. |
FAILED | Lettura o svuotamento non riusciti, per esempio per un SQLFilter sbagliato; in ImportMulti, richiesta non valida (limiti superati, tipi duplicati, postazione mancante). | Leggi il messaggio in ErrorList e correggi la richiesta. |
keyinvalid | Chiave mancante, sbagliata, disattivata o senza permesso. | Vedi le risposte di rifiuto. |
ko | Richiesta illeggibile o errore imprevisto. | Leggi ErrorList: contiene il messaggio e, se il corpo non è stato capito, il testo ricevuto e la diagnostica della compressione. |
Confronta lo stato senza distinguere maiuscole e minuscole: la ricostruzione dopo l'esportazione, per esempio, risponde ok.
Un errore di scrittura
Risposta (estratto){
"Status": "ALERT",
"RequestDataOperation": 0,
"TypeObject": 19,
"ErrorList": [
{ "TypeObject": 19, "ElementNumber": 2, "SourceError": "Riga n° 3: Descrizione non specificato" }
]
}
Il terzo articolo della lista (indice 2) non aveva la descrizione: gli altri sono stati salvati.
Errori di trasporto
Se la chiamata non arriva al server (rete, certificato, timeout) non c'è risposta da leggere: ripeti la chiamata dopo una breve attesa. La libreria .NET lo fa da sola, fino a tre volte. Le scritture si possono ripetere senza danni, perché INSERTORMODIFY aggiorna i record già presenti invece di duplicarli (purché AllInsert sia falso).