Foros del Web » Programación para mayores de 30 ;) » Java »

Servlet Java

Estas en el tema de Servlet Java en el foro de Java en Foros del Web. Hola, He empezado a hacer un Servlet y he probado a enviar desde el cliente una palabra. Codigo cliente: . . //envia la palabra OutputStream ...
  #1 (permalink)  
Antiguo 20/02/2007, 09:37
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 20/02/2007, 11:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Servlet Java

¿Y como te conectas al Servlet? ¿Directamente con sockets o usando HttpUrlConnection?
  #3 (permalink)  
Antiguo 20/02/2007, 16:27
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Servlet Java

uso HttpUrlConnection
  #4 (permalink)  
Antiguo 20/02/2007, 17:18
Avatar de PeterQB  
Fecha de Ingreso: diciembre-2006
Ubicación: La eterna primavera
Mensajes: 39
Antigüedad: 17 años, 4 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 21/02/2007, 01:22
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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.
  #6 (permalink)  
Antiguo 21/02/2007, 08:14
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
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){}
}
  #7 (permalink)  
Antiguo 21/02/2007, 09:41
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
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
  #8 (permalink)  
Antiguo 03/09/2009, 14:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Servlet Java

Cita:
Iniciado por jisas Ver Mensaje
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!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:47.