Eh già, sono un lungoassente :) … ma non voglio tornare sul perchè
Tornando alla questione già che si possa fare è confortante, quindi entro un pò + nel merito:
La mia Azienda mensilmente invia dati ad “Azienda superiore” ed ora si presenta la possibilità di cambiare la modalità da caricamento manuale su una pagina web (protetta con utente/password chiaramente) ad un webservice … che a quel punto potrebbe essere automatizzato e sto cercando di capire quale automazione predisporre e mi sono chiesto se una di queste vie fosse Access.
Trattasi di invio ad un web service di file XML.
Il documento di sintesi fornitomi spiega che ci si deve autenticare con la funzione LOGIN che restituisce un Token univoco che identifica la sessione utente.
Qui alcuni esempi forniti:
Esempio di login + invio
L’esempio mostra come fare la login, ottenere il token ed effettuare un invio ottenendo il progressivo invio.
LoginWsService service1 = new LoginWsService();
LoginWs loginService = service1.getLoginWsPort();
FlussiRegionaleWsService service2 = new FlussiRegionaleWsService();
FlussiRegionaleWs flussiService = service2.getFlussiRegionaleWsPort();
// Effettuo la login, ottengo il token da utilizzare nelle richieste successive
String token = loginService.login("nome.cognome","password");
// Preparo i file da inviare
List<FlussiFile> files = new ArrayList<FlussiFile>();
FlussiFile fileA = new FlussiFile();
fileA.setCodTipoFile("SDO2_XMLA");
fileA.setFile(Files.readAllBytes(Paths.get("c:\\file_a.xml")));
fileA.setNomeFile("file_a.xml");
fileA.setNumRecord(20);
FlussiFile fileB = new FlussiFile();
fileB.setCodTipoFile("SDO2_XMLB");
fileB.setFile(Files.readAllBytes(Paths.get("c:\\file_b.xml")));
fileB.setNomeFile("file_b.xml");
fileB.setNumRecord(20);
files.add(fileA);
files.add(fileB);
// Effettuo l'invio dei file, ottengo il prgInvio da utilizzare nelle richieste successive
BigDecimal prgInvio = flussiService.invioFile(token, "SDO2", 2017, 1, files);
Esempio di simulazione
L’esempio mostra come effettuare la simulazione e verificare lo stato di elaborazione. Gli stati sono definiti nella tabella Esiti// Simulo l'invio effettuato
// L'esito della richiesta di simulazione è "CSSIM", ovvero simulazione in corso
Esito simula = flussiService.simula(token, prgInvio);
// Fintanto che la simulazione è in corso, aspetto
while(flussiService.stato(token, prgInvio).getCodStato().equals("CSSIM")){ Thread.sleep(2000); }