Newsgroup: it.comp.java
Titolo: Problema di dialogo applet-servlet.

E' da un po che sto provando a far comunicare un applet con una servlet, la
quale poi legge un db e ritorna delle risposte all'applet. Ho visto che ci
sono vari modi, ma qualche giorno fa ho trovato l'esempietto che allego in
fondo. Siccome l'ho trovato molto semplice, ho provato a usare questo tipo
di dialogo. Mi sembrava che funzionasse tutto (in locale) , ma quando ho
provato a far girare l'applet da un'amico, interrogando la servlet a casa
mia via internet, non ha funzionato. In pratica l'InputStream dell'applet
becca zero byte e quindi non legge niente. C'e' un modo per sincronizzare la
lettura-applet solo dopo la fine scrittura-servlet ?
Grazie
Ottavio
/***************    SERVLET  *****************/
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class testServlet extends HttpServlet
{
  public void service(HttpServletRequest req,
                      HttpServletResponse resp)
    throws ServletException, java.io.IOException
    {
      DataInputStream inData =
        new DataInputStream(req.getInputStream());
      resp.setContentType("application/octet-stream");
      ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
      DataOutputStream outData = new DataOutputStream(byteOut);
      byte byteVal = inData.readByte();
      char charVal = inData.readChar();
      int intVal = inData.readInt();
      String stringVal = inData.readUTF();
      outData.writeByte(byteVal);
      outData.writeChar(charVal);
      outData.writeInt(intVal);
      outData.writeUTF(stringVal);
      outData.flush();
      byte[] buf = byteOut.toByteArray();
      resp.setContentLength(buf.length);
      ServletOutputStream servletOut = resp.getOutputStream();
      servletOut.write(buf);
      servletOut.close();
    }
}
/***************    APPLET  *****************/
import java.io.*;
import java.awt.*;
import java.applet.*;
public class testApplet extends Applet
{
 public void init()
 {
  setLayout(null);
  setSize(426,266);
  goButton.setLabel("GO");
  add(goButton);
  goButton.setBackground(java.awt.Color.lightGray);
  goButton.setBounds(144,12,101,39);
  SymMouse aSymMouse = new SymMouse();
  goButton.addMouseListener(aSymMouse);
 }
 java.awt.Button goButton = new java.awt.Button();
 class SymMouse extends java.awt.event.MouseAdapter
 {
  public void mouseClicked(java.awt.event.MouseEvent event)
  {
   Object object = event.getSource();
   if (object == goButton)
    goButton_MouseClicked(event);
  }
 }
 void goButton_MouseClicked(java.awt.event.MouseEvent event)
 {
      try {
        System.out.println("Attempting to connect to
 
http://localhost:8080/examples/servlet/testServlet
");
        java.net.URL url = new
  java.net.URL("
http://localhost:8080/examples/servlet/testServlet
");
        java.net.URLConnection c = url.openConnection();
        c.setUseCaches(false);
        c.setDoOutput(true);
        c.setDoInput(true);
        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
        DataOutputStream outData = new DataOutputStream(byteOut);
        System.out.println("Writing test data");
        outData.writeByte(1);
        outData.writeChar(2);
        outData.writeInt(3);
        outData.writeUTF("Test Message");
        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();
        System.out.println("Reading response");
        DataInputStream inData =
          new DataInputStream(c.getInputStream());
        byte byteVal = inData.readByte();
        char charVal = inData.readChar();
        int intVal = inData.readInt();
        String stringVal = inData.readUTF();
        inData.close();
        System.out.println("Data read: " +
                           byteVal + " " +
                           ((int) charVal) + " " +
                           intVal + " " +
                           stringVal);
      }
      catch (Exception e) {
        e.printStackTrace();
      }
 }
}

Ma a me proprio non mi vuole rispondere nessuno ? :)

E su daiii, con tutti i draghi di java che frequentano questo ng,
nessuno che mi vuole dare una mano ?!?!?!?


--
Bruno Bossola, a Java Developer
Sent via Deja.com 
http://www.deja.com/
Before you buy.

...


,

--


 wrote in message
8l1m4p$lhv$1...@nnrp1.deja.com...
