有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用GeckoView获取网页源代码

我是一名安卓开发人员,最近知道了GeckoView。 我可以通过安卓 WebView(java代码)获取网页的源代码

然而,在我的新网站上,安卓 Webview无法加载网页,但GeckoView可以。 现在我想通过GeckoView获得一个网页的源代码。 有没有人知道解决这个问题的办法

提前感谢


共 (2) 个答案

  1. # 1 楼答案

    据我所知,您无法使用GeckoView获取源代码,但GeckoView库确实有GeckoWebExecutor。看看fetch方法及其返回的WebResponse

    通过将WebResponse.bodyInputStream转换为字符串,可以获得源代码

  2. # 2 楼答案

    执行此操作的一个选项可以遵循以下步骤:

    1. 检测我的geckoview加载的页面
    2. 将加载的url保存到SharedRef中
    3. 如果用户希望查看页面的源,请加载保存在该SharedRef中的url

    所以

    (1-2)正如您已经知道的,geckoview没有那种方便的shouldOverrideUrlLoading()方法,因此您必须处理NavigationDelegate类,它有onLocationChange(),我在其中放了这一行,它只不过是将当前url作为字符串保存到名为“geckoViewUrl”的SharedRef字符串中:

    sharedprefs.edit().putString("geckoViewUrl", url).apply();

    之前有所有设置(SharedPref等)。检测到加载的页面并将url保存到SharedRef中,让我们转到最后一步3

    (3)对于我的使用,我只希望允许用户查看(和复制)源代码,出于最小努力的原则,我使用另一个带有普通旧webview的活动来显示它。这很容易实现,不会给用户带来混乱。他/她想要查看代码,我会在另一个活动中显示代码。完成后,他/她关闭新活动,生活继续

    那个么,用户想要源代码吗?使用webview加载另一个活动,并使其加载保存的sharedpref字符串:

    addr2open = pref_out.getString("geckoViewUrl", "");

    这样做(例如),您会得到一个url用户想要查看分配给字符串变量的源代码。要完成此操作,您只需让webview加载这个字符串,前面加上宝贵的单词^{,如下所示:

    webView.loadUrl("view-source:" + addr2open);

    就这样。当然,您可以使用相同的活动实现一个解决方案,或者使用geckoView,显示多个选项、菜单等。我只想向您展示一种以简单的方式解决问题的方法。您询问“如何使用GeckoView获取网页源代码”。答案是这样的。工作完美。如果这对你有好处,请接受这一正确答案。非常感谢。快乐编码