2012-10-17 5 views
0

WebView의 HTML 데이터를 가져 오려고합니다. 나는이 일을 수천 번 해봤고, 나 자신도 일할 수있게했습니다. 그러나, 나의 새로운 프로젝트는 흥미로운 상황을 가져온다 : WebView을 통해 사이트에 로그인 한 다음 HTML을 가져와야한다. 분명히 Socket 메서드는 작동하지 않습니다. 웹 페이지가 반환되기 위해서는 인증을위한 쿠키가 필요하기 때문입니다. 나는 또한 JavascriptInterface 트릭을 시도했지만 그 중 하나가 작동하지 않았다. 이를 달성하는 가장 좋은 방법은 을 CookieManager과 함께 사용하는 것입니다. 누구든지 auth 쿠키로 WebView에서 원시 HTML 코드를 얻을 수있는 방법을 알고 있습니까? 감사!쿠키가 포함 된 Android WebView HTML

편집 : 일부 JS 주사를했는데 쿠키를 보지 못했습니다 ... 쿠키 문제가 아닐 수도 있습니다. 하지만 리디렉션되는 링크는 mainPage?a=1infoPage과 같이 일반적입니다. 링크를 복사하거나 다른 브라우저에 붙여 넣기 만하면 이 로그인되어이 링크를 볼 수 있습니다. 웹 전문가 인 당신을 위해, 당신은 쉬운 해결책을 알 것입니다.

답변

1

WebView은 실제로 프로그래밍 방식으로 사용하기 위해 HTML을 가져 오는 것이 아닙니다. 아이디어는 사용자 상호 작용을위한 URL에 대한 직접적인 창일뿐입니다.

당신이 CookieManagerjava.net.HttpURLConnection을 사용할 수 있습니다, 당신이 원하는 것을 얻으려면, 그것은 안드로이드에 나를 위해 좋은 일이고 안드로이드 SDK의 문서에 제시된 것 :

// in an activity's onCreate: 
cookieManager = new CookieManager(); 
CookieHandler.setDefault(cookieManager); 

// later on 
void getAPage(URL url) { 
    HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 

    System.out.println("hello from huc, response code is: " + huc.getResponseCode()); 

    // huc.getInputStream() gives you the content. 
} 

CookieManager을 통해 모든 쿠키를 지속됩니다 추가 작업없이 애플리케이션의 수명을 연장 할 수 있습니다. HttpURLConnection으로도 소식을 올릴 수 있습니다.

+0

'CookieHandler.setDefault()'는'CookieManager'가 아닌'CookieHandler'를 인수로 취합니다. 따라서이 접근법이 그대로 작동하는지 확신 할 수 없습니다. – crocboy