Я пытаюсь извлечь html из URL и манипулировать html, а затем визуализировать его с GeckoView
Я собирался использовать Jsoup для получения строки html из URL, но this сказал, что есть проблема, чтобы получить полный HTML с помощью Jsoup
Так что я нашел другой способ получить HTML, используя GeckoView ( это и API-справочник )
Итак, мне удалось получить строку html из URL и отобразить ее только с GeckoView
Это код
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()
}
Проблема в том, что веб-страница ненапечатан полностью так, как показано ниже
![1](https://i.stack.imgur.com/Dk3Xp.png)
И у меня есть еще один вопрос к приведенному выше коду
Я нашел это, если написал код вродеэто ниже
result.then { response ->
htmlContentInStringFormat = response?.body?.bufferedReader().use { it?.readText() }
result
}
geckoSession.loadData(htmlContentInStringFormat!!.toByteArray(Charsets.UTF_8),"text/html")
Метод geckoSession.loadData () выполняется первым, чем этот результат. Лямбда-функция
И я не понимаю, почему это похоже на
мои вопросы
- Почему я не могу полностью распечатать веб-страницу?
- Почему эта лямбда-функция выполняется так поздно?