Newsgroup: it.comp.java
Titolo: Nuovamente su Applet-Servlet

Buongiorno a tutti, abbiate pieta' se vi ripropongo questo mio problema, ma
non ne riesco a uscire fuori !
Purtroppo continuo ad avere lo stesso problema ormai da mesi. Non riesco a
stabilire una comunicazione ottimale tra applet e servlet a prescindere
dalla rete (intranet o internet) e dal browser (ie4 o ie5 o ns4.7 o ns6).
In pratica adesso, con questo codice, il tutto mi funziona bene su intranet
e solo con ie4 o 5, con netscape purtroppo no. Con netscape l'applet riesce
ad effettuare richieste alla servlet a singhiozzo. Qualche volte funziona,
qualche volta no e qualche volta funziona a meta', cioe all'applet arriva
solo un pezzo della stringa inviata !!! In realta' non so proprio cosa fare.
Di seguito allegho un pezzo di codice dell'applet e della servlet.
/* Applet */
 public void caricaListaUser() {
  String stringVal = new String();
  try {
   java.net.URL url = new
   java.net.URL(getDocumentBase(),"servlet/Sv_Gest_Pren");
   java.net.URLConnection c = url.openConnection();
   c.setUseCaches(false);
   c.setDoOutput(false);
   c.setDoInput(false);
   ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
   DataOutputStream outData = new DataOutputStream(byteOut);
   outData.writeChar('U');
   outData.flush();
   byte buf[] = byteOut.toByteArray();
   c.setRequestProperty("Content-type","application/octet-stream");
   c.setRequestProperty("Content-length","" + buf.length);
   DataOutputStream dataOut = new DataOutputStream(c.getOutputStream());
   dataOut.write(buf);
   dataOut.flush();
   dataOut.close();
   InputStream instr = c.getInputStream();
   DataInputStream inData = new DataInputStream(instr);
   stringVal = inData.readUTF();
   inData.close();
  }
  catch (Exception er) {System.err.println("Toppa di AP_Gest_Pren (2) : " +
er);
  }
  StringTokenizer st = new StringTokenizer(stringVal,"ง");
  while (st.hasMoreTokens())
   cho_user.addItem(st.nextToken());
 }
/* Servlet */
 public void inviaListaUser(DataInputStream inData, DataOutputStream
outData) {
  System.out.println("invia lista ut");
  String ritorno = new String();
  String query1 = "select ragsoc from clianag where not userid is null order
by ragsoc";
  Statement stmt=null;
  ResultSet rs=null;
  try {
   stmt = con.createStatement();
   rs = stmt.executeQuery(query1);
   while(rs.next()) {
    ritorno = ritorno+"ง"+rs.getString("ragsoc");
   }
  } catch(SQLException ex) {
   System.err.println("Sv_Gest_Pren (1) - Errore Sql: " + ex.getMessage());
  }
  try {
   if(rs != null)
    rs.close();
   if(stmt != null)
    stmt.close();
  } catch(SQLException ex) {
  }
  try {
   outData.writeUTF(ritorno);
   outData.flush();
  } catch(IOException ex) {
   System.err.println("Sv_Gest_Pren (1) - Errore I/O: " + ex.getMessage());
  }
 }
Grazie mille
Ottavio

    c.setDoInput(false);
Errata corrige. Ops, scusate :) Ovviamente stanno tutte e due settati a true
!
Ho postato una prova che avevo fatto.
Saluti
Ottavio

Allora, credo di aver trovato finalmente la risposta al mio problema sul
sito della sun. Allego cio' che ho trovato tante volte dovesse
interessare a qualcuno :
"A lot of people have posted (here and in other places) about a problem
with Netscape when an applet tries to call a servlet. IE works fine but
the servlet is never called with Netscape. We found a way to make it
work with Netscape so I though I should post it. To make an applet talk
to a servlet you need to open an URLConnection to the servlet and then
an outputStream to send it information. The trick we found is to call
connection.connect() (where connection is your URLConnection object)
AFTER closing the outputStream to the servlet. We have no idea why it
works, but it does work (At least for us) The same fix is true for
connecting to a cgi script. "
Saluti
Ottavio


mai avuto problemi! Scrissi un articolo qualche tempo fa su CP, il
codice lo puoi trovare online. Benchè un po' diverso, il codice per
comunicare fra applet e servlet c'era e funzionava bene su NS.
ciao
-- 
Ugo
__________________________________________________________________________
"La perfezione si ottiene non quando non c'è nient'altro da aggiungere, 
 bensì quando non c'è più niente da togliere." Antoine de Saint-Exupéry
__________________________________________________________________________
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Enterprise Java Consulting
@mail: Ugo.L...@Flashnet.it
Home Page: 
http://www.ugolandini.net
Mentoring: 
http://www.projectoo.com
Work Phone: 06/5814740
Fax Phone: 06/233207542 
Cell Phone: 0347/6310749 - 0347/4783580
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^