Newsgroup: it.comp.java
Titolo: Ci riprovo "POST" da applet

ho trovato l'esempio seguente su Google,
ma "ERRORE1"   mi da:  " 
java.net
  .SocketException:  socket was closed"
percheeee'!!!!
Ne avrei "moltissimo" bisogno... spero in un consiglio.
grazie 1000
----------------------------------
import java.io.*;
import java.net.*;
import java.awt.*;
import java.applet.*;
public class SigClient extends java.applet.Applet {
    String           nextLine;
    Socket           OurSocket;
    DataInputStream  DataIn;
    DataOutputStream DataOut;
 String ERRORE="0";
 String ERRORE1="1";
 String ERRORE2="2";
 String ERRORE3="3";
    public void init() {
    nextLine = "Waiting";
       repaint();
       try {
          OurSocket = new Socket (getCodeBase().getHost(), 80);
          DataIn  = new DataInputStream (OurSocket.getInputStream());
          DataOut = new DataOutputStream (OurSocket.getOutputStream());
       } catch (IOException e) { ERRORE2=e.toString();}
       // Send CGI request to Server
       try {
     DataOut.writeBytes("POST /cgi-bin/sigpost.cgi HTTP/1.0\r\n");
          DataOut.writeBytes("Content-type:
application/x-www-form-urlencoded\r\n");
           DataOut.writeBytes("Content-length: 9\r\n");
           DataOut.writeBytes("Name=gary\r\n\r\n");
           DataOut.flush();
           DataOut.close();       //If I do not close, I never see "Waiting"
       } catch (Exception e) { ERRORE=e.toString(); }
        try {
          while ((nextLine = DataIn.readLine()) != null) {
paint();      }
        } catch (IOException ee) {ERRORE1=ee.toString();}
       try {            // close up shop
           DataIn.close();
           OurSocket.close();
       } catch (IOException e) { ERRORE3=e.toString();}
    }
    public void paint(Graphics g) {
       g.drawString(nextLine, 10, 10);
       g.drawString (ERRORE ,10,20);
    g.drawString (ERRORE1 ,10,30);
    g.drawString (ERRORE2 ,10,40);
    g.drawString (ERRORE3 ,10,50);
 }
}

Sorry, io non ho tempo ora, ti posso solo suggerire di dare un'occhiata a GMI (sul mio
sito), un sistema di comunicazione applet -> servlet che ho sviluppato tempo fa per un
sistema di trading online. Fra l'altro ci sono anche i sorgenti, che potrebbero esserti di
qualche aiuto. Se ancora non ce la fai, riposta su questo thred sul newsgroup.
Ciao,
    Bruno.


---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola

            DataOut.flush();
Se non ricordo male tra header e body di una richiesta http ci deve 
essere una linea vuota.
Prova con:
DataOut.writeBytes("POST /cgi-bin/sigpost.cgi HTTP/1.0\r\n");
DataOut.writeBytes("Content-type:application/x-www-form-urlencoded\r\n");
DataOut.writeBytes("Content-length: 9\r\n\r\n");
                                      ^^^^^^^^
                                     (separazione header/body)
DataOut.writeBytes("Name=gary\r\n\r\n");
                              ^^^^
                              (non ricordo se sono necessari)
DataOut.flush();
Se anche cosě non funziona verifica che l'host a cui ti colleghi
sia lo stesso da cui scarichi la pagina (non č permesso aprire
socket verso host diversi da quelli da cui scarichi la pagina a
meno di firmare l'applet)
Ciao, Maurizio.

 ha scritto un messaggio quotato
male...


Sorry, capita di sbagliare.
Ciao,
    Bruno.
