0

我正在尝试在 android web 视图中加载 cookie。以下是我的java代码。

final String link = "http://www.iitjeeacademy.com/mobile/question/CHE/AAH";

final String domain = "iitjeeacademy.com";

String authToken = LoginService.getCookie();

String cookie = "auth-token=" + authToken + "; csrf-token=mobile";

webView = (WebView) findViewById(R.id.webView);

Map<String, String> cookieMap = new HashMap<String, String>();

cookieMap.put("Cookie", cookie);


android.webkit.CookieSyncManager.createInstance(QuestionActivity.this);
android.webkit.CookieManager.getInstance().setAcceptCookie(true);

WebkitCookieManagerProxy coreCookieManager = new WebkitCookieManagerProxy(null, java.net.CookiePolicy.ACCEPT_ALL);

java.net.CookieHandler.setDefault(coreCookieManager);

android.webkit.CookieSyncManager.getInstance().sync();

final WebSettings settings = webView.getSettings();
settings.setLoadsImagesAutomatically(true);
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);

webView.setWebViewClient(new CustomBrowser());
webView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl(link, cookieMap);

private class CustomBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        view.loadUrl(url);
        return true;
    }
}

WebView布局.xml

<WebView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

我尝试为自定义 cookie 存储实现WebkitCookieManagerProxy,如 -> Pass cookie from HttpURLConnection (java.net.CookieManager) to WebView (android.webkit.CookieManager)中所示。

但它不起作用。当我运行此代码时,在网络视图中,我被重定向到网站的索引页面......

4

2 回答 2

2
 WebView webview = (WebView) this.findViewById(R.id.webView);
    final WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setAppCacheEnabled(true);
    settings.setBuiltInZoomControls(true);
    settings.setPluginState(WebSettings.PluginState.ON);

    webview.setWebChromeClient(new WebChromeClient());

    CookieSyncManager.createInstance(YourClass.this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeSessionCookie();
    cookieManager.setCookie("your domain name", cookie);
    CookieSyncManager.getInstance().sync();

    Map<String, String> header = new HashMap<String, String>();
    header.put("Cookie", cookie);
    if(isConnected()) {
        webview.loadUrl(url, header);
    }
    else {
        webview.setVisibility(View.GONE);
        textView.setText("Your custom error message.");
        textView.setVisibility(View.VISIBLE);
    }
于 2015-09-26T10:54:29.977 回答
0

**这可能会有所帮助**

WebView webview = (WebView) this.findViewById(R.id.wv_file);
    final WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setAppCacheEnabled(true);
    settings.setBuiltInZoomControls(true);
    settings.setPluginState(WebSettings.PluginState.ON);

    webview.setWebChromeClient(new WebChromeClient());

    CookieSyncManager.createInstance(ActivityName.this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeSessionCookie();
    String cookieString = "param=value";
    cookieManager.setCookie(domain_of_url("domain name"), cookieString);
    CookieSyncManager.getInstance().sync();

    Map<String, String> abc = new HashMap<String, String>();
    abc.put("Cookie", cookieString);
    webview.loadUrl("domain name",
            abc);

你能得到解决方案吗

也可以通过这个链接来获得正确的想法Android WebView Cookie 问题

或者您也可以像这些问题中那样 使用 android 的会话 cookie

在 Android 中使用 cookie

于 2015-09-26T11:04:25.643 回答