2016-12-05 1 views
6

로 웹뷰에서 쿠키를 가져 오기 I 현재 웹보기는 쿠키의 이름과 값 쌍을 반환)합니다 (onPageFinished경로와 유효 기간

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에서 쿠키를 얻을 이십 기가 바이트있다. 이제

나는 그런 경로와 유효 기간 요법 등이 쿠키에 대한 자세한 정보를 얻을 싶습니다 ...

나는 쿠키의 모든 "원시 데이터"를 추출 할 수있는 방법에 어떤 생각?

답변

2

당신은 응답 헤더 (쿠키는 HTTP 헤더로 전송됩니다) 액세스하기 위해 웹보기의 자원로드를 오버라이드 (override) 할 필요가있다. 새를 만들어 (

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

그런 다음 URL을 자신의 내용을 검색하고 웹보기에 그를 제공 할 수 있습니다 : 안드로이드의 버전에 따라 당신은 당신이 WebViewClient 다음과 같은 두 가지 방법을 재정의해야 지원하고있다 WebResourceResponse) 또는 null을 반환하고, 웹보기가 (이 네트워크에 다른 전화를 걸 것을 고려 처리하자!)

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

이 시도 :

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

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

+0

이 전용 허가 만의 이름과 값 쌍을 반환의 getCookie하여 문자열 반환 이십 기가 바이트 구문 분석 쿠키. 나는 모든 정보를 찾고 있습니다 : https://developer.chrome.com/extensions/cookies#method-getAll – Lucas78