J'ai des requêtes http. L'un d'entre eux récupère et analyse les cookies de sa réponse. Je sauverai ce cookie par l'intermédiaire CookieSyncManager et CookieManager avec le code suivant:CookieManager.getCookie() renvoie la valeur null
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
cookieManager.removeAllCookie();
String cookieString = cookie.getName() + "=" + cookie.getValue();
Log.e(getClass().toString(), cookieString);
cookieManager.setCookie(START_PAYMENT_URL, cookieString);
CookieSyncManager.getInstance().sync();
Log.e(getClass().toString(), "Get cookie: " + cookieManager.getCookie(START_PAYMENT_URL));
Les deux appels Log.e écrivent même cookie. Donc tout a l'air ok.
J'ai une activité différente qui contient WebView. J'ai besoin d'appeler la méthode postUrl(String url)
avec quelques paramètres POST et avec cookie d'autorisation. Je pensais que cookie est dans CookieManager et tout devrait bien fonctionner. Bien. C'est. Mais sur les appareils 4.x seulement.
Sur les périphériques 2.x, WebView crée postUrl sans cookie.
est ici le code d'activité qui contient WebView.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.payment_webview);
final String billId = getIntent().getStringExtra(INTENT_BILL_ID);
final WebView webView = (WebView) findViewById(R.id.payment_webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e(getClass().toString(), url);
view.loadUrl(url);
return false;
}
});
String postData = "id_bill=" + billId;
Log.d(TAG, "Requesting payment URL " + START_PAYMENT_URL + " with post data: " + postData);
Log.d(TAG, CookieManager.getInstance().getCookie(START_PAYMENT_URL));
webView.postUrl(START_PAYMENT_URL, EncodingUtils.getBytes(postData, "BASE64"));
}
CookieManager.getInstance() retourne getCookie (START_PAYMENT_URL) null
sur les appareils 2.x et valeur du cookie sur les périphériques 4.x.
Comment résoudre ce problème?