Depois de fazer login com o WebView, quando ligo para o HttpClient... E vice-versa.
No Android, WebView e HttpClient parecem ser tratados como navegadores separados.
Esse assunto já foi explicado aqui e ali.
[[Android]WebView, Sessão de Compartilhamento com HTTPClient] (http://d.hatena.ne.jp/shohhei1126/20120110/p1)
Integração com HttpClient e WebView
No entanto, criei uma aula que só sincroniza para que eu não precise pensar em nada. Se quiser, por favor, faça isso.
[code lang="java" light="true"] pacote your.package;
import java.util.List;
importar org.apache.http.cliente.CookieStore; importar org.apache.http.cookie.Cookie; importar org.apache.http.impl.client.DefaultHttpClient; importar org.apache.http.impl.cookie.BasicClientCookie;
importar android.webkit.CookieManager; importar android.webkit.CookieSyncManager;
/** * HttpClient, classe para sincronizar sessões entre WebViews */ classe pública SessionSync {
Especifique o domínio de onde o COOKIE será enviado
sequência final estática privada YOUR_DOMAIN = "seu.domínio";
Domínio de recuperação de COOKIE (com um . para cobrir subdomínios)
final estática privada COOKIE_DOMAIN = "." + YOUR_DOMAIN;
URL para enviar COOKIE
estática privada final COOKIE_URL = "http://" + YOUR_DOMAIN;
Especifique o nome do parâmetro para armazenar o ID da sessão
Este é um exemplo de PHP
estática privada final String SESSID = "PHPSESSID";
/**
* Sincronizar o ID da sessão no lado HttpClient com o WebView
*
* @param HttpClient para sincronizar a sessão
*/
empty estático público httpClient2WebView(DefaultHttpClient httpClient) {
Loja CookieStore = httpClient.getCookieStore();
Lista<Cookie> cookies = store.getCookies();
CookieManager cookieManager = CookieManager.getInstance();
for (Cookie cookie : cookies) {
if (cookie.getDomain().indexOf(COOKIE_DOMAIN) < 0) {
continue;
}
se (! SESSID.igual(cookie.getName())) {
continue;
}
Se você deletar aqui, o cookie que você definiu no momento da sincronização também será
A exclusão não é permitida porque pode desaparecer
cookieManager.removeSessionCookie();
String cookieStr = cookie.getName() + "=" + cookie.getValue();
cookieManager.setCookie(COOKIE_DOMAIN, cookieStr);
CookieSyncManager.getInstance().sync();
}
}
/**
* Sincronizar o ID da sessão no lado do WebView com o HttpClient
*
* @param HttpClient para sincronizar a sessão
*/
public static void webView2HttpClient(DefaultHttpClient httpClient) {
String cookie = CookieManager.getInstance().getCookie(COOKIE_URL);
String[] cookies = cookie.split("; ");
for (String keyValue : cookies) {
keyValue = keyValue.trim();
String[] cookieSet = keyValue.split("=");
String key = cookieSet[0];
Valor da string = cookieSet[1];
se (! SESSID.iguales(chave)) {
continue;
}
BasicClientCookie bCookie = novo BasicClientCookie(chave, valor);
bCookie.setDomain(COOKIE_DOMAIN);
bCookie.setPath("/");
Loja CookieStore = httpClient.getCookieStore();
store.addCookie(bCookie);
}
}
} [/código]