Newsgroup: it.comp.java
Titolo: POST con URLConnection

Ciao,
    	devo effettuare una chiamata HTTP ad una servlet dalla mia 
applicazione e passare un paio di parametri. 
Non posso fare qualcosa tipo
http://miowebserver/miaservlet?param1=val1&param2=val2
perche' i valori di tali parametri non devono comparire nella query string.
Ho pensato di fare qualcosa del tipo:
    	URL _url = new URL("
http://miowebserver/miaservlet
");
    	HttpURLConnection conn = (HttpURLConnection)_url.openConnection();
    	conn.setRequestMethod("POST");
    	conn.setRequestProperty("param1","val1");
    	conn.setRequestProperty("param2","val2");
ma non funziona (la servlet quando fa request.getParameter("param1") 
ritorna null).
Dove sbaglio?
Grazie,
--mattia

Dove sbaglio?
Le properties che hai settato sono negli headers della tua request,
mentre la servlet legge i parametri dalla queryString, che in caso di
richiesta POST viene scritta su uno stream anzichč appesa all'URL.
In pratica per mandare una query POST devi fare cosě:
import java.net.*;
import java.io.*;
public class SetParameterTest
{
	public static void main(String[] args)throws Exception
	{
		String queryString=
			"firstname=Maurizio&lastname=Testa";
		URL _url = new URL
			("
http://localhost/examples/servlet/
"+
			"RequestParamExample");
    		HttpURLConnection conn = (HttpURLConnection)
			_url.openConnection();
		conn.setRequestMethod("POST");
    		conn.setDoOutput(true);
		PrintWriter out=new PrintWriter
			(conn.getOutputStream(),true);
		out.println(queryString);
		out.close();
		InputStream inStream=(InputStream)
			conn.getContent();
		BufferedReader in=new BufferedReader
			(new InputStreamReader(inStream));
		String line="";
		while((line=in.readLine())!=null)
			System.out.println(line);
	}
}
HTH,
Mauri.
-- 
La forza di gravitŕ č un falso mito,
č la Terra che succhia!


nel bene e nel male ti consegno questo pezzo di codice realizzato
appiccicano tra di loro un po' di cose e che fa quello che chiedi.
Restituisce la risposta del server ed effettua un POST all'host
"host", sulla porta "port", chiamando la pagina "file". i dati da
POSTare sono in ... "dati".
String postPagina(String host, int port, String file, String dati)
throws MalformedURLException, IOException
    {
    	URL url;
	    URLConnection	urlConn;
	    url = new URL ("http", host, port, file);
	    urlConn = url.openConnection();
	    urlConn.setDoInput(true);
	    urlConn.setDoOutput(true);
	    urlConn.setUseCaches(false);
	    PrintWriter out=new
PrintWriter(urlConn.getOutputStream(),true);
	    out.println(dati);
        out.close();
        char buf[] = new char[1024];
        InputStreamReader ir=new
InputStreamReader(urlConn.getInputStream());
	    StringBuffer sb = new StringBuffer();
        int buflen = buf.length;
        int n;
        do {
            n = ir.read(buf, 0, buflen - 1);
            if(n != -1) {
                sb.append(buf, 0, n);
            }
        } while(n != -1);
        ir.close();
        return sb.toString();
    }
-- 
Seti@Home Java Applets
http://maruko.cjb.net/

			conn.getContent();
ahhh! dovevo castarlo ad uno stream!... avevo cercato di castarlo a
String senza successo e ho scelto un'altra strada (vedi mio post
appena dopo il tuo)... quel "Content" mi ha fuorviato.
ciao


appena dopo il tuo)... quel "Content" mi ha fuorviato.
La prima volta che ho *pistolato* con getContent() mi sono domandato:
che azz mai conterrà, 'sto content?
Siccome non trovavo documentazione ho fatto:
	Object content=conn.getContent();
	System.out.println(content.getClass());
che mi ha stampato un bel
	class sun.net.www.http.KeepAliveStream
Evviva! era uno stream, e come tale si poteva castare al suo
progenitore!
Da questo ho tratto una lezione più generale: quando *non sai* che
razza di Object sia, fattelo dire da lui stesso...
HTH,
Mauri.
 
-- 
La forza di gravità è un falso mito,
è la Terra che succhia!

razza di Object sia, fattelo dire da lui stesso...
In realatà dovrebbe essere una prerogativa dell'OO :
l'autodocumentazione:))
-- 
WEbdOM webmaster di
Metronic.It mobile phone philosophy
www.gadgetpoint.it
 serigrafia on line

OK, ha funzionato! Grazie a tutti.
Ciao,
--mattia