2016-12-05 14 views
6

Obecnie mam WebView wich dostać ciasteczka w onPageFinishedGet ciasteczka z WebView z toru i data ważności

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() zwraca tylko nazwy i wartości par cookie.

Teraz chciałbym uzyskać więcej informacji o tym pliku cookie, takie jak ścieżki i datą ważności ect ...

Każdy pomysł w jaki sposób można wyodrębnić wszystkie „surowe” dane z ciasteczek?

Odpowiedz

2

Trzeba zastąpić załadunek Resource Webview w celu uzyskania dostępu na nagłówki odpowiedzi (ciasteczka są wysyłane jako nagłówków http). W zależności od wersji Androida jesteś wspieranie trzeba zastąpić dwóch następujących metod WebViewClient:

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; 
      } 
     }); 

Następnie można pobrać zawartości URL siebie i podać, że do WebView (tworząc nowy WebResourceResponse) lub zwróci null i niech WebView obsłużyć to (wziąć pod uwagę, że to dokonać innego połączenia do sieci!)

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

Spróbuj tego:

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

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

+0

to jedynie zezwolenie do analizowania powrót ciąg przez GetCookie wich zwraca tylko nazwy i wartości par ciasteczka. Szukam wszystkich tych informacji: https://developer.chrome.com/extensions/cookies#method-getAll – Lucas78