我正在尝试从网址中获取html并对其进行处理,然后使用GeckoView对其进行渲染
我本打算使用Jsoup从URL获取html字符串,但是this表示使用Jsoup获取完整的html是一个问题
所以我找到了另一种使用GeckoView(this和api reference)来获取html的方法
所以我成功地从网址中获取了html字符串,并仅使用GeckoView渲染了它。
这是代码
<Response [400]>
{'error': 'invalid_grant', 'error_description': 'Bad Request'}
问题在于网页未完全打印如下
对于上述代码,我还有一个问题
如果我在下面编写了这样的代码,我就发现了这一点
private fun setupGeckoView() { // I call this in the onCreate method
geckoView = findViewById(R.id.geckoview)
val runtime = GeckoRuntime.create(this)
geckoSession.open(runtime)
geckoView.setSession(geckoSession)
val executor = GeckoWebExecutor(runtime)
val result = executor.fetch( // from here i start getting the sourcecode inputStream
WebRequest.Builder("https://google.com")
.header("Accept","Application/json")
.build())
result.then { response ->
htmlContentInStringFormat = response?.body?.bufferedReader().use { it?.readText() }
// ㄴ and i get the html string from the inputStream
geckoSession.loadData(htmlContentInStringFormat!!.toByteArray(Charsets.UTF_8),"text/html")
// ㄴ and then here i render and print the html string to my screen
result
}
urlEditText.setText(INITIAL_URL) // from here is just for setting a progressbar for web pages loading
progressView = findViewById(R.id.page_progress)
geckoSession.progressDelegate = createProgressDelegate()
}
首先执行geckoSession.loadData()方法,然后执行lambda函数
我不明白为什么会这样
所以我的问题是
答案 0 :(得分:1)
您可以从Firefox桌面使用about:debugging
连接到您的设备,并在开发者控制台中检查错误。
我的猜测是页面正在尝试从Google加载图像,并且不允许进行热链接。
如果您要做的只是处理一些html请求,那么您真正应该使用的是应用程序中内置的WebExtension,您可以在此处找到文档:https://gv.dev/consumer/docs/web-extensions