Выполнение HTTP-запроса и использование файлов cookie - PullRequest
0 голосов
/ 26 мая 2020

Я работаю над приложением, которое поможет мне войти на сайт и просматривать данные, которые мне нужны. Хотя у меня нет проблем с тем, чтобы убедиться, что я анализирую эти данные и работаю с ними должным образом, я столкнулся с проблемой при входе на веб-сайт. Я попытался отправить запрос POST, но по какой-то причине это не сработало, поэтому я начал более внимательно изучать, как запрос POST на этот веб-сайт отправляется в браузере, и вот что я получил: Изображение

Я также спросил парня, который разработал этот веб-сайт, и он сказал, что мне следует использовать два файла cookie с «ulogin» и «upassword» для входа в систему. Я попытался использовать JSOUP, как показано здесь: https://jsoup.org/cookbook/input/load-document-from-url

Я использовал .cookies ("upassword", "10101010"), но это не сработало, поэтому я думаю, что это нечто большее, чем просто написание простой строчки в сообщении. запрос.

Пожалуйста, кто-нибудь может объяснить мне, как использовать файлы cookie для входа на веб-сайт, или хотя бы указать мне направление, в котором я могу это узнать, потому что я так близок к тому, чтобы это приложение появилось, и я смогу продолжить разработку, но это только один шаг, на котором я действительно застрял.

Вот дополнительное изображение с заголовками ответов и запросов из * 10 17 *. Изображение

1 Ответ

0 голосов
/ 12 июля 2020

Мне удавалось заставить его работать долгое время, но ответа не было. Итак, здесь мы go.

Файлы cookie - это просто простые заголовки, поэтому вы должны относиться к ним как к таковым. В моем случае с использованием HttpURLConnection вот фрагмент рабочего кода:

Примечание. Мой исходный запрос предназначен для Java, однако с тех пор я перешел на Kotlin, поэтому в этом решении используется Kotlin, и эта функция является функцией приостановки, что означает, что она предназначена для использования с Kotlin Couroutines.

suspend fun httpRequest(): String {
        val conn: HttpURLConnection = url_profile.openConnection() as HttpURLConnection
        conn.requestMethod = "POST"
        conn.doOutput = true
        conn.doInput = true
        conn.setRequestProperty(
            "Cookie",
            "YOUR COOKIE DATA"
        )
        val input: BufferedReader = BufferedReader(InputStreamReader(conn.inputStream))
        return input.readText()
    }
...