Estoy trabajando en una aplicación web que usa Jersey. Estoy tratando de implementar un tipo de cosas de obtener después de publicar usando un URIBuilder y una respuesta verOtros. El objetivo es redirigir al mismo URI en el que el navegador ya está activado, pero forzar un GET. Funciona un poco como esto:Jersey - Redirección con Get Not Put, causa un bucle de redirección
- petición llega a través de PUT
- solicitud PUT procesa
- respuesta SeeOther volvió
Qué debe ocurrir es que el navegador recoge el 303 Ver Otros y realiza un GET en el URI que recibe. Desafortunadamente, lo que está sucediendo es que realiza un PUT en el URI en su lugar (hasta donde puedo decir) y el PUT lo envía de vuelta al paso 1. anterior, lo que causa un bucle de redirección.
¿Alguna idea de lo que está mal aquí?
private Response giveSeeOther(){
/*Get the base URI builder*/
final UriBuilder uriBuilder = m_uriInfo.getBaseUriBuilder();
/* Some stuff to create the URI */
final Map<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("uid", getUid());
final URI redirectUri = uriBuilder.path(SomeObject.class).
path(SomeObject.class, "get").
buildFromMap(parameterMap);
/* See Other (303) */
return Response.seeOther(redirectUri).build();}
Ese es el código para el ver otro método. No estoy seguro de qué otro código podría querer ver, pero avíseme.
Su código para el 'seeOther' se ve bien (no entiendo lo que le hace UriBuilder con las clases). Una cosa que debes comprobar es que llamas 'giveSeeOther()' solo desde un manejador PUT y no desde un manejador genérico. También me gustaría saber con qué usuarios-agentes ves este comportamiento. – Guss