Newsgroup: it.comp.java
Titolo: java.net.URL con HTTP e comando POST

Come faccio ad aprire un URL e spedire i dati con protocollo HTTP e
metodo POST? Con quali metodi setto i parametri (i dati da spedire)?
Sulla documentazione JDK1.2 non ho trovato nulla di specifico
sull'argomento HTTP... è gradita segnalazione di documentazione
Grazie anticipate.

Esempio di post di un documento XML di client ad una servlet che produce un
risultato in risposta:
http://www.jguru.com/faq/view.jsp?EID=550558
Mi spiace è in inglese, ma il codice è cross-language ;-)
Luigi
"Alx" <a...@TOGLIMIklojaf.com> ha scritto nel messaggio
news:3d08b345...@news.comm2000.it...



E se non volessi utilizzare xml? Un'altro limite è che la tecnologia
server side è apache con estensione php... il server deve ricevere i
dati come se fossero postati da un form html. In sostanza mi serve
sapere come Java può ricreare questo layout HTTP per postare i dati.
Avevo pensato di encodarli nell'url, ma come giustamente fai notare
nel post che mi hai segnalato, questa soluzione pone un limite troppo
basso alla dimensione dei dati trasferibili.


Allora prova a dare un'occhiata a GMI sul mio sito, un middleware per fare parlare applet
con oggetti remoti via servlet: forse puo' esserti d'aiuto o darti qualche spunto:
funziona, e' in produzione su un po' di progetti, ed e' facile da usare. C'e' anche un
mini-tutorial in italiano.
Ciao,
    Bruno.
---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola

E se non volessi utilizzare xml? Un'altro limite è che la tecnologia
non ti interessa. quello che c'e' nella variabile book lo decidi tu, non
deve essere per forza xml.
nel caso di un form in book metterai i valori dei campi del form
separati da &:
es.
book = "nome=pippo&cognome=goofy"
e la pagina php sara' esattamente identica a come sarebbe se stessi
usando un form html...
ciao
-- 
Seti@Home Java Applets
http://maruko.cjb.net/


Per fare la prova ho modificato il client cosě:
        //set-up the connection
        conn.setDoInput(true);
		conn.setDoOutput(true);
		conn.setUseCaches(false);
        DataOutputStream out = new DataOutputStream(
             conn.getOutputStream()
        );
        String code = "12341234";
        int number = 9999;
        String spruz = "";
        while (spruz.length() < 1000)
              spruz += "abcdefghijklmnopqrstuvxywz\n\t[]";
        String data =
        	"code="+URLEncoder.encode(code)
        	+"&number="+URLEncoder.encode(""+number)
        	+"&spruz="+URLEncoder.encode(spruz);
 
		System.out.println(data);
        //sends the data to the server
        out.writeBytes(data);
        out.flush();
        out.close();
lo script php č:
	echo "Spruzzer started...\n";
	echo "CODE = ".$code."\n";
	echo "NUMBER = ".$number."\n";
	echo "SPRUZ DIM = ".strlen(addslashes($spruz))." bytes\n";
	echo "BEGIN SPRUZ -\n\n".$spruz."\n\nEND SPRUZ -"
Tutto bene. Se perň modifico cosě:
        while (spruz.length() < 1000) spruz +=
        "abcdefghijklmnopqrstuvxywz\n\t[]\0";
(nota il carattere \0) php mi fa echo di una stringa di 30 caratteri:
ho perso il resto dei dati.
Come fare se devo spedire dati in formato binario?

Come fare se devo spedire dati in formato binario?
una soluzione elegante per ora mi sfugge:
URLEncode da una parte e URLdecode dall'altra? non so se funziona anche
col bianario; UUencode e UUdecode? funziona ma i dati si gonfiano e poi
c'e' il supporto in gia' pronto in java e php? non so, guardaci...
se dall'altra parte c'era java potevi fare un sacco di cose, vedi GMI di
Bruno B., con PHP non so... non lo conosco.


dei dati binari non dovresti passarli in GET ma in POST.