WebView攔截器處理Cookie問題

今天遇坑啦,在使用webView的過程中出現(xiàn)了Cookie讀不到,我依然用著以前同一套WebViewActivity的代碼,但是加載過程中就是一直提示"調(diào)用失敗"。服務(wù)端鐵定說是我們客戶端的問題,可是我們一直用的同一套代碼啊,為啥這次會出問題呢?

了解問題

首先我們查詢Android中Cookie的處理方式,如下:

CookieSyncManager.createInstance(this);
        CookieManager cookieManager = CookieManager.getInstance();

        List<Cookie> cookies = BaseSupport.getCookieStore().getCookies();
        Log.i(TAG, "cookie=" + cookies);
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                String cookieString = cookie.getName() + "="
                        + cookie.getValue() + ";domain=" + cookie.getDomain();
                cookieManager.setCookie(url, cookieString);
            }
            CookieSyncManager.getInstance().sync();
        }

以上代碼我各個地方加了一遍依然無果。

猜想解決問題的方法

webView的Client也就兩個,分別是WebViewClient和WebChromeClient。首先查看了WebChromeClient的所有方法,也就onProgressChanged算有點用處,處理了一下進度條的事情。接著查看了WebViewClient的所有方法,如下:

//請求完成
public void onPageFinished(WebView view, String url)
//攔截器
public WebResourceResponse shouldInterceptRequest(WebView view,
                    WebResourceRequest request)

發(fā)現(xiàn)攔截器攔截了所有的請求,這樣我可以對所有的請求都加Cookie,問題應(yīng)該可以解決。

解決問題

說干就干

@Override
            public WebResourceResponse shouldInterceptRequest(WebView view,
                    WebResourceRequest request) {
                // TODO Auto-generated method stub
                syncCookie(request.getUrl().toString());
                return super.shouldInterceptRequest(view, request);
            }

我封裝前面去Cookie的邏輯,取出request里面的url,所有的事情就完成了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容