2010-08-26 12 views
8

Actualmente estoy buscando una forma de iniciar la aplicación de navegador predeterminada en Android y pasarle una cookie de sesión.Android: abre el navegador con la cookie de sesión suministrada

Mi aplicación se comunica con una API externa sobre la que no tengo control usando HttpClient, luego pasa al usuario al sitio para las etapas finales.

Soy consciente de que esto probablemente sea posible con WebView. Sin embargo, debo abrir la aplicación de navegador externa en lugar de utilizar WebView internamente.

sé que:

Intent.ACTION_VIEW 

se puede utilizar para abrir el navegador, sin embargo no he podido encontrar mucha información sobre el hecho de pasar a través de cualquier dato adicional.

Cualquier ayuda es muy apreciada.

Respuesta

6

Actualmente estoy buscando una forma de iniciar la aplicación de navegador predeterminada en Android y pasarle una cookie de sesión .

Esto no es posible, lo siento.

+0

¿Hay alguna forma de obtener el sistema o navegador CookieStore y agregar mi cookie manualmente a eso? – rblk

+0

@XenoPhoenix: No. Esa sería una violación de privacidad importante. Sin mencionar el hecho de que el usuario puede no estar usando el navegador en el que estás pensando, de todos modos. – CommonsWare

+0

Para ser sincero, sospeché tanto que era por eso que esperaba que hubiera una manera de hacerlo con un intento. Aunque como sospechaba y respondiste, lamentablemente, actualmente no es compatible. – rblk

4

¿Usted sabe url-rewrite? Te ayudará a lograr tu demanda. Una url-write puede ser así: "http: // localhost: 8080/test/error.jsp; jsessionid = C4E6732EBB4C17F409AB41143735C096".

El "jsessionid" es la clave para sessionid, y C4E6732EBB4C17F409AB41143735C096 es el valor. La clave para representar el atributo de sesión es diferente según el idioma que se use en los proyectos web.

lo tanto, si desea mantener la sesión, puede iniciar el valor por defecto de esta manera:

Uri uri = Uri.parse("http://localhost:8080/test/error.jsp;jsessionid=C4E6732EBB4C17F409AB41143735C096"); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
    startActivity(intent); 

la sessionid se puede obtener de la HttpClient, y sólo tiene que añadir detrás de su URL.

También hay algunos problemas que deben prestar atención. Primero, en la url, el separador es ";" no "?", porque el sessionid está en el encabezado http, no en el cuerpo http. Segundo, si el navegador ya tiene una sesión con el servidor, la url-rewrite no funcionará porque el navegador usará su propia sesión, para resolver esto, puede usar su aplicación para obtener la sesión del navegador y usar esta sesión. en el HttpClient.

+0

Gracias por el comentario, desafortunadamente esta no era la cookie que necesitaba pasar, y no tenía control sobre el sitio web al que estaba transfiriendo al usuario para agregar funciones como esta. Sin embargo, esto es potencialmente una buena solución para otros casos, como respuesta estricta a la pregunta, CommonsWare es correcta. – rblk

Cuestiones relacionadas