Newsgroup: it.comp.java
Titolo: Richiamare CGI esterno da un applet

Ho un applet che richiama un CGI esterno: come faccio a porre dei controlli
sul risultato della funzione richiamata? come fa un utente qualsiasi a
sapere se l'operazione è stata effettivamente eseguita? Che tipo di
controlli devo usare?
Grazie per l'aiuto, ciao
Francesca
il codice è:
try {
     url = new
URL("http://"+DBSERVER+"/cgi-bin/fra.sh?PAR1=1&PAR2="+ritornopopup+"&PAR3="+
SpoolStampa+"&PAR4="+REPOUSER);
     System.out.println("costruiti input shell");
    } //try
    catch (MalformedURLException ev)  {
     System.err.println("Malformed URL: " );
     System.out.println("Malformed URL: " );
    } //catch
    if (url != null) {
     System.out.println(url);
     getAppletContext().showDocument(url);
     System.out.println("mostra url");
     System.out.println("REQUEST è: " + REQUEST);
//     okstamp = true;
    } //if (url != null) {
   } // else di if (ritornopopup.equals("")) {
   } //if (selectedNode.isLeaf()) {
  else {
   System.out.println("Non stampa perchè non è una foglia");
  } //else di if (selectedNode.isLeaf()) {
 } //try
 catch (Exception et)  {
  System.out.println("eccezione è: " + et);
 } //catch
} //lanciashell





Provo a spiegarmi meglio.


Questo applet richiama un CGI esterno che permette 
di stampare il contenuto del documento selezionato. Attraverso un TRY....CATCH 
ho il controllo se il CGI è lanciato correttamente ma non so se poi alla fine la 
stampa sia stata effettivamente effettuata (ad esempio la richiesta viene messa 
in coda di stampa, quindi il try..catch dà risultato positivo, ma se ad esempio 
la stampante è spenta quel documento non viene effettivamente stampato). come 
faccio ad avere questo tipo di feedback?


Grazie per l'aiuto


Francesca



> Francesca Boni wrote:

Scusa, ma se il CGI ha accesso alla stampante non può essere lui a fare
tutti i controlli del caso per poi restituire all'applet una stringa
"OK" oppure un eventuale messaggio d'errore?
Ciao, Cris
-- 
Cristian Veronesi ><((((º> 
http://www.crpa.it
If Bill Gates had a dime for every time a Windows box crashed...
Oh, wait a minute... he _already_ does! ;)





E' proprio quello che voglio! Che compaia un 
messaggio di successo/insuccesso all'utenete che ha richiesto l'informazione! Ma 
come faccio a reperire l'output del CGI? Come fa a comunicare con 
l'Applet?


Nell'Applet io lancio il CGI, ma come fa il CGI a 
mandare il suo output all'Applet?


Sto seguendo una strada, ma non so se è corretta, 
inoltre in fase di compilazione mi dà un ClassCastException:


 


try { 
  url = new URL( "
http://190.10.0.74/cgi-bin/fraprova.sh
" 
); 
 } // try
 catch (MalformedURLException e) { 

  System.out.println("URL failed: " + e);


 


 } // catch 


 


 
// java.net.HttpURLConnection; 

 try { 
//  con = (HttpURLConnection) new 
url.openConnection(); 
  con = 
(HttpURLConnection)url.openConnection(); 

  System.out.println(url.openConnection().getClass().getName()); 



 


  System.out.println("test: " + 
con.getContentType()); 
 } // try
 catch (IOException ei) { 

  System.out.println("Connection failed: " + ei);


 


 // whatever 
 } // catch 



 


 


 


 
 try { 

  con.setRequestMethod("GET"); 

  //connection.setDoInput(true); 

  con.setDoOutput(true); 
  con.connect(); 

 } // try
 catch (IOException eo) { 

  System.out.println(eo);


 


 } // catch 


 


String result_data = ""; 
String line =""; 
try { 

BufferedReader in = new BufferedReader( new 
InputStreamReader(con.getInputStream()) ); 
while (line!=null) { 

result_data += line; 
line = in.readLine(); 
} 
} catch 
(IOException e) { 
// whatever 
} 


 


 try { 
  int result_code= con.getResponseCode(); 

  String result_msg= con.getResponseMessage(); 
 } // 
try
 catch (IOException ex) { 

  System.out.println("Response failed: " + ex);


 


 } // catch 


 


con.disconnect(); 


 


Qualche consiglio?


Grazie dell'attenzione


Francesca


 



 output all'Applet?
Scusa, per mancanza di tempo non ho guardato il codice che hai postato.
Comunque ti posto una classettina di prova che apre l'URL
http://java.sun.com/
 e legge il suo output tramite un BufferedReader
stampandolo riga per riga sullo standard output. Nota che:
1. il fatto che l'URL punti ad una pagina statica, a un CGI, a una
servlet ecc. è assolutamente irrilevante
2. usare un BufferedReader presuppone che l'output sia in formato testo.
E' meglio non usarlo nel caso l'output sia binario, ma spero che non sia
il tuo caso :)
3. l'applet deve risiedere sullo stesso server su cui si trova il CGI
HTH
Ciao, Cris
import java.io.* ;
import java.net.* ;
public class Test {
  public static void main(String args[]) {
    try {
      URL url = new URL("
http://java.sun.com/
") ;
      InputStream is = url.openConnection().getInputStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(is))
;
      String line = null ;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
      }
    } catch (MalformedURLException muex) {
      muex.printStackTrace() ;
    } catch (IOException ioex) {
      ioex.printStackTrace() ;
