Est-il possible d'obtenir le code HTML à partir de WebView
Je voudrais préventivement obtenir le code HTML d'une page web qui doit être chargé dans un webView
, l'analyser en utilisant les regex, et d'afficher uniquement le code HTML que je veux, tout en laissant la page web continue de penser que c'est chargé de tout.
Est-il possible de le faire dans la WebViewClient.onLoadResource()
ou des méthodes similaires?
EDIT: j'ai essayé ceci:
class MyJavaScriptInterface
{
@SuppressWarnings("unused")
public void showHTML(String html, Context context)
{
new AlertDialog.Builder(context)
.setTitle("HTML")
.setMessage(html)
.setPositiveButton(android.R.string.ok, null)
.setCancelable(false)
.create();
pageHTML = html;
}
}
@Override
public void customizeWebView(final ServiceCommunicableActivity activity, final WebView webview, final SearchResult mRom) {
mRom.setFileSize(getFileSize(mRom.getURLSuffix()));
webview.getSettings().setJavaScriptEnabled(true);
MyJavaScriptInterface interfaceA = new MyJavaScriptInterface();
webview.addJavascriptInterface(interfaceA, "HTMLOUT");
WebViewClient anchorWebViewClient = new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
/* This call inject JavaScript into the page which just finished loading. */
webview.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
Pattern pattern = Pattern.compile("<h2>Winning Sc.+</h2></div>(.+)<br>", Pattern.DOTALL);
Matcher matcher = pattern.matcher(pageHTML);
matcher.find();
L'interface n'est jamais appelé
Vous devez vous connecter pour publier un commentaire.
Eu à utiliser HttpClient. pas de cookies est nécessaire, il suffit de parser du html:
Voici un tutoriel de L'extraction du HTML à partir d'une WebView n'oubliez pas de lire l'avertissement en fin de tutoriel.
Essayez d'ajouter @JavascriptInterface avant
public void showHTML(String html, Contexte de contexte)
Dans le cas où vous avez une chance d'influencer la partie serveur où vous recevez une page à partir de la, vous pouvez demander à le rediriger vers une page en particulier, en cas d'erreur. Dans votre WebViewClient vous pouvez détecter cette redirection et l'utilisation d'un signal d'erreur.