Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Aprire url per inviare dati con Applet

    Ciao a tutti, ho un problema: sto sviluppando un applet e ho bisogno che si connetta a un determinato URL per mandargli dei dati POST e aspettare un'eventuale risposta del server... Da JFrame funziona tutto correttamente mentre da applet no... non carica quello che dovrebbe per cui deduco che la connessione non vada a buon fine...

    Il codice che uso:

    codice:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
    import java.util.Vector;
    
    /**
     * Classe per la gestione dell'invio di parametri post a una pagina
     * @author Alessandro De Roma
     */
    public class SiteFX {
    
        private String postParameters = "";
        private String webPage;
        
        /**
         * Aggiunge un valore da inviare tramite post
         * @param name il nome della variabile da inviare
         * @param value il valore della variabile, se non deve avere valore indicare null 
         */
        public void addPostValue(String name, String value) {
            if (value == null) {
                try {
                    postParameters += "&" + URLEncoder.encode(name, "UTF-8");
                } catch (Exception ex) {
                }
            } else {
                try {
                    postParameters += "&" + URLEncoder.encode(name, "UTF-8") + "=" + URLEncoder.encode(value, "UTF-8");
                } catch (Exception ex) {
                }
            }
        }
    
        /**
         * Invia dati post senza stare in ascolto per dei dati di ritorno
         * @return true se l'invio va a buon fine, altrimenti false
         */
        public boolean sendPost() {
            try {
                if(webPage==null|| webPage.equals("")) throw new Exception("Empty url");
                addPostValue("im",null);
                URL url = new URL(webPage);
                URLConnection conn = url.openConnection();
                conn.setDoOutput(true);
                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                wr.write(postParameters);
                wr.flush();
            } catch (Exception e) {
                return false;
            }
            postParameters="";
            return true;
        }
        
        /**
         * Invia dati post restando in ascolto per dei dati di ritorno
         * @return null se non riceve dati, altrimenti una stringa contenente i dati
         */
        public String sendPostWithReturnValue() {
            String returnValue="";
            try {
                if(webPage==null|| webPage.equals("")) throw new Exception("Empty url");
                addPostValue("im","settato");
                URL url = new URL(webPage);
                URLConnection conn = url.openConnection();
                conn.setDoOutput(true);
                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                wr.write(postParameters);
                wr.flush();
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = rd.readLine()) != null) {
                    returnValue+=line+"\n";
                }
                wr.close();
                rd.close();
            } catch (Exception e) {
                return null;
            }
            System.err.println(returnValue);
            postParameters="";
            return returnValue;
        }
        /*
        Vector<String>usedSentences = new Vector<String>();
        public boolean alreadyUsed(String sentence){
            for (int i = 0; i < usedSentences.size(); i++) {
                if(sentence.equals(usedSentences.elementAt(i))) return true;
            }
            return false;
        }*/
        
        /**
         * Serve a settare la pagina a cui inviare i dati post
         * @param webPageToPointAt la pagina a cui inviare dati post
         */
        public void setWebPageToPointAt(String webPageToPointAt){
            webPage = webPageToPointAt;
        }
        
        /**
         * Dice al server di cominciare una sessione
         * @return l'id di sessione
         */
        public String startSession(){
            addPostValue("startsession","set");
            return sendPostWithReturnValue();
        }
        
        /**
         * Termina la sessione
         */
        public void endSession(){
            addPostValue("endsession","set");
            sendPost();
        }
    }
    Come detto, tutto questo funziona a meno che io non usi una Applet... sapete dirmi come posso risolvere??

    applet.policy:
    codice:
    grant {
        permission java.security.AllPermission;
    };
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

  2. #2
    EDIT:

    Mi sono ricordato che da locale non mi funziona il caricamento di dati da URL, quindi l'ho trasferito sul mio dominio e ora funziona tutto, la discussione si può chiudere.
    L'ascensore può scendere su e giù...
    by Prof di Sistemi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.