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

Recoger parametros de una petición get

Estas en el tema de Recoger parametros de una petición get en el foro de Java en Foros del Web. Hola! Quiero hacer lo siguiente: Dado un link del tipo: www.server.com?par1=val1&par2=val2 y el nombre de un parámetro (en este caso par1 o par2), quiero obtener ...
  #1 (permalink)  
Antiguo 07/05/2009, 04:55
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Pregunta Recoger parametros de una petición get

Hola!

Quiero hacer lo siguiente:

Dado un link del tipo: www.server.com?par1=val1&par2=val2 y el nombre de un parámetro (en este caso par1 o par2), quiero obtener el valor de ese parámetro (en este caso val1 o val2).

Es decir, la llamada (código mostrado más abajo)

Código PHP:
getValueFromLink("www.server.com?par1=val1&par2=val2""par1"
debería devolver "val1".

Para ello he desarrollado el siguiente método:

Código PHP:
public String getValueFromLink(String linkString parameter) {
    
    
// Busco el índice a partir del cual está el valor deseado
    
int start_index link.lastIndexOf(parameter) + parameter.length() + 1;
    
    
// Me quedo con la subcadena comprendida entre el índice buscado
    // y el delimitador de inicio del siguiente parámetro "&"
    
String value link.substring(start_indexlink.indexOf("&"start_index));
    
    return 
value;        

Está claro que el ejemplo funcionará siempre y cuando el valor buscado no corresponda al último parámetro. Podéis darme alguna idea para poder recoger todos los casos posibles?

Un saludo,
/Andrea MM
  #2 (permalink)  
Antiguo 07/05/2009, 05:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Recoger parametros de una petición get

Si miras el formato de como se codifican los parametros, veras que vienen despues del caracter '?' y de la forma nombre=valor. Yo cortaría primero por parametros y luego miraría el nombre que coincida.

Así como lo tienes, hay más casos en los que falla. Como por ejemplo si el nombre del parametro aparece en el valor de un parametro anterior, si el nombre de un parametro anterior contiene el nombre del parametro que buscas...

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 07/05/2009, 05:20
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Recoger parametros de una petición get

Si, tienes razón, aunque no termino de entender tu propuesta.
Entiendo que sugieres obtener la sub-cadena a partir del símbolo "?", pero luego no te sigo...

Estoy intentando solucionarlo usando expresiones regulares, y separar por "&", pero tengo que estudiarlo un poco más porque de momento sólo me lo separa en 2 sub-cadenas. Cada uno de los resultados se correspondería con una tupla parámetro=valor (tal vez es por ahí por donde ibas con tu sugerencia...?)

El código sería algo así:

Código PHP:
Pattern patron Pattern.compile("(.+)&(.+)");
    
Matcher matcher patron.matcher(link);

    
matcher.find();

    
System.out.println(matcher.group(1));
    
System.out.println(matcher.group(2));
    
System.out.println(matcher.group(3));
    
System.out.println(matcher.group(4));
    
System.out.println(matcher.group(5)); 
Pero debo indicar de alguna manera que se puede repetir la cadena inicial "(.+)".

Si consigo el objetivo lo postearé. Si alguien lo consigue antes... será bienvenido!
  #4 (permalink)  
Antiguo 07/05/2009, 05:52
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Recoger parametros de una petición get

Creo que resulta mucho más sencillo utilizando la función split de Java... Me estaba complicando demasiado.
  #5 (permalink)  
Antiguo 07/05/2009, 05:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Recoger parametros de una petición get

A la cadena despues del '?' le haces un split por el caracter '&' y a cada trozo que te devuelva, le haces otro split por '=', por ejemplo.

S!

Edit: Jejeje, hemos escrito a la vez
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #6 (permalink)  
Antiguo 07/05/2009, 06:02
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 19 años
Puntos: 1
Respuesta: Recoger parametros de una petición get

Si, perfecto! Muchas gracias
  #7 (permalink)  
Antiguo 07/05/2009, 08:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 115
Antigüedad: 15 años, 5 meses
Puntos: 4
Respuesta: Recoger parametros de una petición get

Y con los metodos getParameterNames() y getParameter(String name) ?? No tienes que andar partiendo la cadena y luego los trozos que obtuviste
  #8 (permalink)  
Antiguo 07/05/2009, 08:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Recoger parametros de una petición get

Esos métodos sirven cuando tienes un request que has recibido, pero no si tu partes de una cadena cualquiera, como parece ser el caso.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
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 22:44.