2016-12-05 34 views
6

ile Web görünümündeki çerezleri alın Şu anda webview sadece çerez ad ve değer çiftleri döndürür) (onPageFinishedyolu ve son kullanma tarihi

mWebview = (WebView) this.findViewById(R.id.myWebView); 

    mWebview.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      String cookies = CookieManager.getInstance().getCookie(url); 
      Log.d("Cookie", cookies); 
     } 
    }); 

    mWebview.loadUrl("http://www.google.com"); 

CookieManager.getCookie çerezleri olsun wich var. Şimdi

Böyle yolu ve son kullanma tarihi vb olarak bu çerezle ilgili daha fazla bilgi almak istiyorum ...

Ben çerezlere "ham veri" ayıklamak nasıl biliyor musunuz?

cevap

2

Sen yanıt başlıkları (Çerezler http başlıkları olarak gönderilir) erişimi için WebView kaynak yükleme geçersiz kılmak gerekir. Yeni oluşturarak (

mWebview.setWebViewClient(new WebViewClient() { 

      @Override 
      public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { 
       if (request != null && request.getUrl() != null && request.getMethod().equalsIgnoreCase("get")) { 
        String scheme = request.getUrl().getScheme().trim(); 
        if (scheme.equalsIgnoreCase("http") || scheme.equalsIgnoreCase("https")) { 
         return executeRequest(request.getUrl().toString()); 
        } 
       } 
       return null; 
      } 

      @Override 
      public WebResourceResponse shouldInterceptRequest(WebView view, String url) { 
       if (url != null) { 
        return executeRequest(url); 
       } 
       return null; 
      } 
     }); 

Daha sonra url kendiniz içeriğini almak ve WebView'da o verebilir: Android sürümüne bağlı olarak size WebViewClient aşağıdaki iki yöntemi geçersiz kılmak gerekir destekliyoruz WebResourceResponse) ya da boş dönmek ve WebView (bu ağa başka bir çağrı yapmak dikkate almak halledeyim!)

private WebResourceResponse executeRequest(String url) { 
     try { 
      URLConnection connection = new URL(url).openConnection(); 
      String cookie = connection.getHeaderField("Set-Cookie"); 
      if(cookie != null) { 
       Log.d("Cookie", cookie); 
      } 
      return null; 
      //return new WebResourceResponse(connection.getContentType(), connection.getHeaderField("encoding"), connection.getInputStream()); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
-1

bu deneyin:

String[] x = Pattern.compile(";").split(CookieManager.getInstance().getCookie()); 

https://stackoverflow.com/a/5840990/6371926

+0

Bu yalnızca izni sadece ad ve değer çiftleri döndürür getCookie tarafından dize dönüş wich ayrıştırmak kurabiye. Tüm bu bilgileri arıyorum: https://developer.chrome.com/extensions/cookies#method-getAll – Lucas78

İlgili konular