File fileSdIBase_Type

Finalmente siamo riusciti ad avviare i test di interoperabilità, tra delirio sui certificati e blocchi vari sbloccati da sogei, ci siamo, il ws ricevi_file risponde!
Pronti via primo intoppo, passiamo un file di prova (precedentemente validato dallo strumento “Controllare la FatturaPA”) e la risposta è EI01 = file allegato vuoto

Eppure il file c’è e creato cosi:

Dim filefe As New SDI.fileSdIBase_Type
Dim febyte As Byte()
febyte = IO.File.ReadAllBytes("[PERCORSO]\IT01234567890_FPR01.xml")
filefe.NomeFile = “IT01234567890_FPR01”
filefe.File = febyte

filefe.File risulta lungo 4385 e passato al ws cosi:

sdiresponse = sdiws.RiceviFile(filefe)

Qualche consiglio?
Grazie a tutti

Salve Giulio;

FAI ATTENZIONE al fatto che: (a quanto espressamente indicato dalla SOGEI) i test DEVONO essere eseguiti un successione corretta (WS001;WS002 ecc.) il primo test (WS001) ti chiede di inviare un file FatturaPA errato; in questo caso riceverai una Soap.response negativa;

A giudicare dal codice sembra tu stia implementando con Microsoft .NET Framework; è da diversi anni che non lo utilizzo più quindi non so esattamente quali elaborazioni eseguano le varie funzioni;

in ogni caso mi pare che ci siano alcune incongruenze:

  1. NomeFile: deve essere il nome per esteso del file trasmesso ovvero: IT01234567890_FPR01.xml;
  2. File: secondo le specifiche tecniche il contenuto del file DEVE ESSERE in base64Binary; quindi accertati se ReadAllBytes restituisce questo tipo di dato;

Durante i nostri test abbiamo SEMPRE inviato file firmati digitalmente (es: IT01234567890_FPR01.xml.p7m);
Ti faccio presente che in alcuni casi (ad esempio nell’invio delle Notifiche di Esito Committente) affinché il test andasse a buon fine abbiamo inviato l’xml in formato stringa, ovvero NON convertito in base64binary;

Ti suggerisco di sviluppare una funzione che registri (magari in un database) tutto il flusso di dati in entrata e in uscita dai tuoi servizi; questo ti sarà molto utile per eseguire il debug del tuo codice ed ottimizzarlo alle necessità del caso.

1 Mi Piace

Buongiorni Antonello,
grazie per i preziosi consigli.
In effetti sono stato un po’ frettoloso (ero contento di aver risolto con i certificati), vado a rivedermi la documentazione e procedo con calma e più attenzione.

Ho visto anche l’altro tuo post dove spieghi i passi che hai seguito.
Grazie

Grazie ancora Antonello.
Confermo di aver risolto con l’invio dei file, adesso ho un altro problema ma apro altro post.

Per inviare correttamente con .NET:

Dim febyte As Byte()
Dim str64 As String
febyte = IO.File.ReadAllBytes(basePath & “[file_fattura].xml.p7m”)
sdirequest.fileSdIAccoglienza = New SDI.fileSdIBase_Type
sdirequest.fileSdIAccoglienza.NomeFile = IO.Path.GetFileName(basePath & “[file_fattura].xml.p7m”)
str64 = Convert.ToBase64String(febyte)
sdirequest.fileSdIAccoglienza.File = Convert.FromBase64String(str64)

E il file deve essere sempre firmato, altrimenti viene scartato