Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Servlet Java (http://www.forosdelweb.com/f45/servlet-java-466589/)

jisas 20/02/2007 09:37

Servlet Java
 
Hola,

He empezado a hacer un Servlet y he probado a enviar desde el cliente una palabra.

Codigo cliente:
.
.
//envia la palabra
OutputStream os = c.openOutputStream();
os.write(("Prueba="+Envio).getBytes());
os.flush();
os.close();
.
.
Codigo Servlet:
.
.
String recibido = request.getParameter("Prueba");
.
.

El problema que tengo es que lo que me llega al servlet es null.
En cambio si quito el os.flush() si que llega al servlet correctamente la palabra.
Veo que en la mayoria de webs donde se puede encontrar material de servlets hacen primero un flush y luego cierran el stream y me gustaria saber porque a mi no me funciona. Gracias

GreenEyed 20/02/2007 11:51

Re: Servlet Java
 
¿Y como te conectas al Servlet? ¿Directamente con sockets o usando HttpUrlConnection?

jisas 20/02/2007 16:27

Re: Servlet Java
 
uso HttpUrlConnection

PeterQB 20/02/2007 17:18

Re: Servlet Java
 
el flush()te sirve para vaciar el buffer cuando se encuentra lleno es muy recomndable cuando lo iutilizas en transmisiones por medio de sockets

GreenEyed 21/02/2007 01:22

Re: Servlet Java
 
El error es bastante extraño puesto que, supuestamente, un close hace tambien un flush, asi que no tendría que haber diferencia. Como mucho que en el segundo caso haces dos veces flush.

De todas formas, en el trozo de codigo que muestras no se ve como tratas el objeto HttpUrlConnection y quizá está por ahí la cosa.

¿Sigues lo que recomiendan los tutoriales?
http://java.sun.com/docs/books/tutor...ngWriting.html

Suerte.

jisas 21/02/2007 08:14

Re: Servlet Java
 
Realmente me daba un poco d verguenza explicarlo todo porque no se mucho del tema y no queria meter la pata... pero es una aplicacion J2ME para moviles. Hago un HttpConnection (que creia que funcionaba igual que HttpURLConnection).

public void run(){
try{
c = (HttpConnection)Connector.open(URL);

c.setRequestMethod(HttpConnection.POST);
c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
c.setRequestProperty("Connection", "close");

OutputStream os = c.openOutputStream();
//envia la palabra
os.write(("Prueba="+Envio).getBytes());
os.flush();
os.close();
}catch(IOException e){}
}

GreenEyed 21/02/2007 09:41

Re: Servlet Java
 
Jejeje, no te ha de dar verguenza, pero en este caso es importante puesto que las librerias que hay por debajo en el Java normal y en J2ME no son las mismas. Puede ser que tengan un bug, y no permitan hacer un flush(), pero si haciendo un close() te funciona, al menos ya sabes que de alguna forma funciona.

No he trabajado con J2ME, así que mucho más no te puedo decir.
Suerte

leo0908 03/09/2009 14:19

Respuesta: Servlet Java
 
Cita:

Iniciado por jisas (Mensaje 1900015)
Hola,

He empezado a hacer un Servlet y he probado a enviar desde el cliente una palabra.

Codigo cliente:
.
.
//envia la palabra
OutputStream os = c.openOutputStream();
os.write(("Prueba="+Envio).getBytes());
os.flush();
os.close();
.
.
Codigo Servlet:
.
.
String recibido = request.getParameter("Prueba");
.
.

El problema que tengo es que lo que me llega al servlet es null.
En cambio si quito el os.flush() si que llega al servlet correctamente la palabra.
Veo que en la mayoria de webs donde se puede encontrar material de servlets hacen primero un flush y luego cierran el stream y me gustaria saber porque a mi no me funciona. Gracias

Para forzar el flush del buffer del response del servlet podes hacer response.flushBuffer(), esto lo obliga a escribir contra el cliente.

Saludos!


La zona horaria es GMT -6. Ahora son las 08:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.