第一页后Android Web View会话不会保留

时间:2017-06-14 21:54:02

标签: php android cookies

我正在创建一个应用程序,该应用程序根据用户的搜索参数向具有特定URL基础和正文的Web视图发出请求。 Web视图正确加载第一个视图,但是当在Web视图中进行选择时,我们注意到带有搜索信息的cookie已丢失。

我是Android开发的新手,但在iOS中,整个过程就像一个魅力。关于可能有什么不同的任何想法?

这是我的代码,我尝试使用Cookie Sync Manager的解决方案:

// WebView set up
        WebSettings settings = webView.getSettings();
        settings.setLoadsImagesAutomatically(true);
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setAppCacheEnabled(true);
        CookieManager cookieManager = CookieManager.getInstance(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.setAcceptThirdPartyCookies(webView,true); } else { cookieManager.setAcceptCookie(true); }
        CookieSyncManager.getInstance().startSync();

        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.setWebViewClient(new AppBrowser(this));

        String url = "https://m.url.com/flights/search";
        if (source != null)
            webView.loadDataWithBaseURL(url, source, "text/html", "UTF-8", null);
        else
            finish();

这是我对Web视图的自定义实现:

public class AppBrowser
        extends WebViewClient {


    /**
     * Attributes
     */
    private ExecutorListener listener;


    public AppBrowser(ExecutorListener listener) {
        this.listener = listener;
    }

    @SuppressWarnings("deprecation")
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return super.shouldOverrideUrlLoading(view, url);
    }

    @TargetApi(Build.VERSION_CODES.N)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        return super.shouldOverrideUrlLoading(view, request);
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        Toast.makeText(new WebViewActivity(), "Oh no! " + description, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        FutureTaskManager.executeAfter(listener, "hide", 3, false);

        CookieSyncManager.getInstance().sync();

    }
}

关于会话持续性可能出现什么问题的任何想法?

1 个答案:

答案 0 :(得分:0)

检查帖子域是否与原始域匹配

我遇到了类似的问题,让我永远无法调试。

我会向有相同问题的任何人提供的一个提示是检查表单的发布位置。

例如,如果您要加载 m.domain.com 并且表单已发布到 domain.com www.domain.com 您的应用将在 m.domain.com 中搜索会话数据,但会话信息将位于 www.domain.com domain.com

花了我几个小时和几杯咖啡来弄清楚这个看似简单的问题。