Buongiorno a tutti.
Qualcuno di voi ha mai riscontrato questo problema o ha idea del perchè sussista?
Il problema: la parte di codice sottostante funziona in modo diverso a seconda che venga eseguita all'interno del main di un programma a linea di comando o invocata dalla pressione di un tasto da un programma con interfaccia grafica.
Il codice:
Se viene copiato e incollato all'interno del main di un programma ed eseguendolo da linea di comando (sostituendo, ovviamente, urlOrdRsp e authCode con argv[0] e argv[1]) questo codice funziona alla perfezione: si connette all'URL passato come primo parametro (+ il secondo, che è il codice di autenticazione) e viene generato il file di risposta (dall'altra parte c'è un sistema SAP di terze parti che risponde sempre con del testo).codice:String urlOrdRsp = ...; String authCode = ...; String linea = ""; String nomeFile = "pippo.txt"; try { PrintStream ps = new PrintStream( new FileOutputStream(nomeFile) ); URL url = new URL(urlOrdRsp + authCode); URLConnection con = url.openConnection(); BufferedReader br = new BufferedReader( new InputStreamReader(con.getInputStream()) ); while((linea = br.readLine()) != null) ps.println( linea ); br.close(); ps.close(); } catch (Exception e) { e.printStackTrace(); }
Se viene eseguito come chiamata di un metodo dopo la pressione di un pulsante, il codice termina immediatamente, senza generare alcuna eccezione e senza nemmeno generare il file (deduco, quindi, che non venga eseguita alcuna scrittura nel file poichè la prima lettura restituisce null, cosa impossibile visto che il SAP dall'altra parte risponde sempre con del testo).
Sembra quasi che la lettura non aspetti l'effettiva ricezione dei dati, cosa che avviene all'interno del main... :master:
Qualche idea?
Ciao.![]()



Rispondi quotando