Java - Error en el envio de url a servlet

 
Vista:

Error en el envio de url a servlet

Publicado por Javier (4 intervenciones) el 26/04/2007 13:43:25
Hola, tengo un problema con mi programa. Intento enviar una url a un servlet por método GET, sin embargo el mensage de error que me sale es 'El Metodo HTTP POST no es soportado por esta URL ', mi código es este:

public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException{
PrintWriter out=res.getWriter();
String protocol = "http";
String host = "localhost";
int port = 8080;
String file = "/DeegreeProject/wms";
URL url = new URL(protocol,host,port,file);
HttpURLConnection enlace = (HttpURLConnection) url.openConnection();

enlace.setRequestMethod("GET");
enlace.setDoOutput(true);
enlace.setDoInput(true);
OutputStreamWriter os = new OutputStreamWriter(enlace.getOutputStream(),"UTF-8");
os.write("GET" + url.toExternalForm()+ "HTTP/1.0\r\n");
os.write("Host: " + url.getHost()+"\r\n");
os.flush();
os.close();
out.println(enlace.getResponseMessage());
}

Alguien podría decirme porqué trata del método Post cuando todo está relacionado al método get?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Error en el envio de url a servlet

Publicado por chuidiang (950 intervenciones) el 26/04/2007 15:03:27
Hola:

Yo tuve un problema parecido. No sé cómo haces la petición desde el navegador, pero si simplemente pones algo como

http://servidor.com/servlet

es posible que el navegador haga la petición por método POST.

No profundicé en el tema, pero lo que hice para arreglarlo fue definir en el Servlet los dos métodos doPost() y doGet() de forma que doPost() simplemente llama a doGet(), que es el que realmente tiene el código

Puedes verlo en http://www.chuidiang.com/chuwiki/index.php?title=Servlet_y_Maven

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en el envio de url a servlet

Publicado por Javier (4 intervenciones) el 26/04/2007 15:28:44
Gracias por tu pronta respuesta.
He probado haciendo la llamada a doGet() desde doPost como me decías pero tampoco me funciona, y he visto tu página pero tampoco ahi está la solución.

Esque verás, estoy intentando utilizar el servidor de mapas Deegree, he conseguido poner mis capas y verlas, pero quiero tener yo el control de ellas. La situación es que desde el cliente, que es un archivo .jsp, envio los datos de las capas a mi servlet, y este servlet le envia los datos al Deegree, que utiliza otro servlet como receptor. Utilizo HttpURLConnection para conectar con el servlet de Deegree, y este necesita una url, cuyos parámetros son los datos de las capas de los mapas. Es ahi al enviarle los datos cuando recibo el mensaje 'El Metodo HTTP POST no es soportado por esta URL ', no entiendo muy bien porqué cuando todo lo envio por 'GET'. Incluso cuando pongo :
setRequestMethod("PUT")
me sale el mensaje 'El Metodo HTTP PUT no es soportado por esta URL ', si lo hago con post me sale el mismo mensaje pero con POST, solo cuando le pongo GET me sigue saliendo el mismo mensaje pero con POST, no lo entiendo. Seguro que es por algo que desconozco, por eso os pido ayuda.
Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en el envio de url a servlet

Publicado por Gonzalo (180 intervenciones) el 26/04/2007 19:28:11
¿Realmente necesitas hace esto manualmente?
OutputStreamWriter os = new OutputStreamWriter(enlace.getOutputStream(),"UTF-8");
os.write("GET" + url.toExternalForm()+ "HTTP/1.0\r\n");
os.write("Host: " + url.getHost()+"\r\n");
os.flush();
os.close();

¿No te vale con usar enlace.connect() y dejar que haga la petición?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar