Il giorno martedì 31 gennaio 2017 19:52:33 UTC+1, Luigi Siciliano ha scritto:
Ti posto un po' di codice che utilizzo per eseguire l'invio sperando che ti possa aiutare.
Io utilizzo la tecnica di predisporre il file da inviare, zipparlo e predisporre un file di appoggio con i parametri per l'invio.
Successivamente richiamo la procedura che esegue l'invio vero e proprio
Il file di appoggio da cui leggere i dati per l'invio, viene letto con una mia estensione di TIniFile per non memorizzare le password in chiaro nel file di appoggio
Anche la risposta (che nel primo invio è sostanzialmente il protocollo) la ri-memorizzo nel file di appoggio, così poi ritorna al processo principale
Tra i parametri di passaggio ricevo l'informazione se utilizzare l'area di test o quella di produzione
procedure TFrmStgHubSysTs.SendToSistemaTs( FileIni: string; TargetTest: boolean );
var Ini: TTecnoSysIniFile;
FileToSend, DataToSend: string;
// Strumenti di Connessione
HTTPRIO: THTTPRIO;
F730: InvioTelematicoSS730pMtom;
// dati specifici
datiProprietario: proprietario;
nomefileallegato: tipoNomeFileAllegato;
pincodeInvianteCifrato: string;
opzionale1: string;
opzionale2: string;
opzionale3: string;
documento: TByteDynArray;
ricevuta: ricevutaInvio;
begin
{ --- Dati Proprietario --- }
datiProprietario := proprietario.Create;
{ --- Lettura File di Collegamento --- }
Ini := TTecnoSysIniFile.Create( FileIni );
{ --- File da Inviare --- }
FileToSend := Ini.ReadString( _SysTs_Sec_I,'Zip','' );
{ --- Dati Proprietario --- }
datiProprietario.codiceRegione := Ini.ReadString( _SysTs_Sec_I,'Reg','' );
datiProprietario.codiceAsl := Ini.ReadString( _SysTs_Sec_I,'Asl','' );
datiProprietario.codiceSSA := Ini.ReadString( _SysTs_Sec_I,'Pre','' );
datiProprietario.cfProprietario := Ini.ReadString( _SysTs_Sec_I,'Cfp','' );
{ --- PinCode Cifrato --- }
pincodeInvianteCifrato := Ini.ReadString( _SysTs_Sec_I,'Pin','' );
{ --- Credenziali --- }
FUserName := Ini.ReadPassword( _SysTs_Sec_I,'Usr','' );
FPassword := Ini.ReadPassword( _SysTs_Sec_I,'Pwd','' );
{ --- Libera --- }
Ini.Free;
{ --- Caricamento file nel buffer di trasmissione --- }
DataToSend := ReadFileToSend(FileToSend);
{ --- Trasferimento nel Buffer --- }
documento := StrToByteDynArray( DataToSend );
{ --- Nome Allegato --- }
nomefileallegato := ExtractFileName( FileToSend );
{ --- Dati Opzionali --- }
opzionale1 := '';
opzionale2 := '';
opzionale3 := '';
{ --- Supporto per Collegamento --- }
HTTPRIO := THTTPRIO.Create(Self);
{ --- Consente anche utilizzo di Certificati non verificati --- }
HTTPRIO.HTTPWebNode.InvokeOptions := [soPickFirstClientCertificate,soIgnoreInvalidCerts];
{ --- Metodo per passare le credenziali di accesso --- }
HTTPRIO.HTTPWebNode.OnBeforePost := DoHTTPRIOHTTPWebNodeBeforePost;
{ --- Collegamento Area Test / Produzione --- }
if TargetTest
then F730 := GetInvioTelematicoSS730pMtom( False,_Deb_SistemaTs_Send,HTTPRIO )
else F730 := GetInvioTelematicoSS730pMtom( False,_Prd_SistemaTs_Send,HTTPRIO );
{ --- Esegue Invio --- }
ricevuta := F730.inviaFileMtom( nomefileallegato,pincodeInvianteCifrato,datiproprietario,
opzionale1,opzionale2,opzionale3,documento );
{ --- Scrittura File di Collegamento --- }
Ini := TTecnoSysIniFile.Create( FileIni );
{ --- Dump Risposta --- }
Ini.WriteString( _SysTs_Sec_O,'Protocollo',Ricevuta.protocollo );
Ini.WriteString( _SysTs_Sec_O,'dataAccoglienza',Ricevuta.dataAccoglienza );
Ini.WriteString( _SysTs_Sec_O,'nomeFileAllegato',Ricevuta.nomeFileAllegato );
Ini.WriteString( _SysTs_Sec_O,'dimensioneFileAllegato',Ricevuta.dimensioneFileAllegato );
Ini.WriteString( _SysTs_Sec_O,'codiceEsito',Ricevuta.codiceEsito );
Ini.WriteString( _SysTs_Sec_O,'descrizioneEsito',Ricevuta.descrizioneEsito );
Ini.WriteString( _SysTs_Sec_O,'idErrore',Ricevuta.idErrore );
{ --- Libera --- }
Ini.Free;
end;