2010-08-26 15 views
8

Attualmente sto cercando un modo per avviare l'applicazione browser predefinita su Android e passare un cookie di sessione ad esso.Android: Apri browser con cookie di sessione fornito

La mia applicazione comunica con un'API esterna su cui non ho alcun controllo tramite HttpClient, quindi passa l'utente al sito per le fasi finali.

Sono consapevole che questo è probabilmente possibile utilizzando una WebView, tuttavia ho molto specificamente bisogno di aprire l'applicazione browser esterna piuttosto che utilizzare una WebView interna.

so che:

Intent.ACTION_VIEW 

Può essere usato per aprire il browser, ma io non sono riuscito a trovare molte informazioni sulla realtà passando attraverso dati aggiuntivi.

Qualsiasi aiuto è molto apprezzato.

risposta

6

Attualmente sto cercando un modo per avviare l'applicazione browser predefinita su Android e passare un cookie di sessione ad esso.

Questo non è possibile, mi spiace.

+0

Esiste comunque la possibilità di ottenere il sistema o il browser CookieStore e aggiungere manualmente i cookie? – rblk

+0

@XenoPhoenix: No. Sarebbe una grave violazione della privacy. Per non parlare del fatto che l'utente potrebbe non utilizzare il browser a cui stai pensando, comunque. – CommonsWare

+0

A dire il vero, sospettavo tanto che era il motivo per cui speravo che ci fosse un modo per farlo con un intento. Anche se come sospettavo e tu hai risposto, sfortunatamente al momento non è supportato. – rblk

4

Conosci l'url-riscrittura? Ti aiuterà a raggiungere la tua richiesta. Un url-write può essere così: "http: // localhost: 8080/test/error.jsp; jsessionid = C4E6732EBB4C17F409AB41143735C096".

"jsessionid" è la chiave per sessionid e C4E6732EBB4C17F409AB41143735C096 è il valore. La chiave per rappresentare l'attributo sessionid è diversa dipende dalla lingua utilizzata nei progetti web.

Quindi, se si vuole mantenere la sessione, è possibile avviare il default in questo modo:

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

il sessionid si può ottenere dal HttpClient, e basta aggiungere dietro il vostro URL.

Ci sono anche alcuni problemi che devono prestare attenzione. Innanzitutto, nell'URL, il separatore è ";" non "?", perché il sessionid si trova nell'intestazione http, non nel corpo http. In secondo luogo, se il browser ha già una sessione con il server, quindi l'url-riscrittura non funzionerà perché il browser utilizzerà la propria sessione, per risolvere questo problema, è possibile utilizzare l'app per ottenere la sessione del browser e utilizzare questa sessione in HttpClient.

+0

Grazie per il commento, sfortunatamente questo non era il cookie che dovevo passare, e non avevo il controllo sul sito web che stavo passando all'utente per aggiungere funzionalità come questa. Questo è potenzialmente un buon work-around per altri casi, tuttavia, come risposta rigorosa alla domanda, CommonsWare è corretta. – rblk

Problemi correlati