Как справиться с отсутствующим атрибутом имени из тега ввода при использовании Jsoup для входа в систему? - PullRequest
0 голосов
/ 16 июня 2020

это то, что я пытаюсь сделать, но я не знаю, как добавить кнопку входа в хэш-карту formData

 private fun getData() {
    Log.d(TAG, "getLoginPage: ")
    try {
        val loginFormResponse=Jsoup.connect(getString(R.string.loginUrl))
            .method(Connection.Method.GET)
            .userAgent("Mozilla")
            .execute()

      val document=loginFormResponse.parse()
        val cookies: HashMap<String, String> = HashMap(loginFormResponse.cookies())
        Log.d(TAG, "getData: ------------------------------${cookies["__RequestVerificationToken"]}")
        val authToken:String=cookies["__RequestVerificationToken"]!!
        val formData: HashMap<String, String> = HashMap()
        formData["utf8"] = "e2 9c 93";
        formData["Email"] ="teacher@gmail.com"
        formData["Password"] ="tttt"
        formData["__RequestVerificationToken"] = authToken
        //Missing login button here

        val homePage = Jsoup.connect(getString(R.string.loginUrl))
            .cookies(cookies)
            .data(formData)
            .method(Connection.Method.POST)
            .userAgent("Mozilla")
            .execute()

        Log.d(TAG, "getData: ---------------------------------------$homePage")
    }
    catch (E:IOException){
        Log.d(TAG, "getLoginPage: ----IO EXCEPTION----${E.message}")
    }
}

Это веб-сайт, который я пытаюсь использовать Пожалуйста, помогите!

1 Ответ

1 голос
/ 17 июня 2020

Вы берете authToken из cookies

val authToken:String=cookies["__RequestVerificationToken"]!!

, но вы должны брать его из input в этом form, потому что есть еще один скрытый ввод с другим значением.
Так что попробуйте это:

val authToken:String = document.select("input[name=__RequestVerificationToken]").first().attr("value")

И вам не нужно добавлять кнопку к отправленным данным.

...