2012-10-17 3 views
0

Я пытаюсь вытащить данные из HTML из WebView. Я видел, как это делалось тысячу раз, и я даже начал работать сам. Однако мой новый проект приводит к интересной ситуации: мне нужно зайти на сайт через WebView и , затем вытащить HTML. Очевидно, что метод Socket не работает, потому что для возврата веб-страницы вам нужен файл cookie для аутентификации. Я также пробовал трюк JavascriptInterface, но это тоже не сработало. Я думаю, что лучший способ добиться этого - использовать HttpGet с CookieManager? Кто-нибудь знает, как я могу получить необработанный код HTML из WebView с файлом cookie? Благодаря!Android WebView HTML с кукисами

EDIT: Я сделал инъекцию JS и не видел куки-файлы ... так что это может быть не проблема с печеньем? Но ссылки, которые вы перенаправляете, носят общий характер, например mainPage?a=1 и infoPage. Вы не можете просто скопировать/вставить ссылки в другой браузер, у вас есть, чтобы войти в систему, чтобы просмотреть эти ссылки. Для тех из вас, кто является веб-экспертами, вы можете легко найти решение.

ответ

1

WebView на самом деле не предназначен для получения HTML-кода для использования в программах, идея заключается в том, что это просто окно с URL-адресом для взаимодействия с пользователем.

Чтобы получить то, что вы хотите, вы можете использовать java.net.HttpURLConnection с CookieManager, это работало отлично для меня на Android, и это предложено в Android 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()' принимает в качестве аргумента 'CookieHandler', а не' CookieManager', поэтому я не уверен, что этот подход работает так, как есть. – crocboy

Смежные вопросы