【问题标题】:Making HTTP request and using cookies发出 HTTP 请求并使用 cookie
【发布时间】:2020-09-13 13:16:00
【问题描述】:

我正在开发一个可以帮助我登录网站并查看我需要的数据的应用程序。虽然我在确保解析该数据并正确使用它方面没有任何问题,但我确实在登录网站时遇到了问题。我尝试发送 POST 请求,但由于某种原因并没有真正起作用,所以我开始更仔细地研究如何在浏览器中发送对该网站的 POST 请求,这就是我得到的: Picture

我还问了一个开发该网站的人,他说我应该使用两个带有“ulogin”和“uppassword”的 cookie 来登录。我尝试使用 JSOUP,如下所示:https://jsoup.org/cookbook/input/load-document-from-url

我使用了 .cookies("uppassword", "10101010"),但它不起作用,所以它让我觉得它不仅仅是写一个简单的帖子请求。

请有人向我解释一下如何使用 cookie 登录网站,或者至少指出我可以学习的方向,因为我非常接近实现该应用程序,我将能够继续随着它的进一步发展,但这只是我真正坚持的一步。

这是来自 Firefox 的带有响应和请求标头的附加图片。 Picture

【问题讨论】:

标签: java android http cookies


【解决方案1】:

我设法让它工作了很长时间,但没有发布答案。所以,我们开始吧。

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()
    }

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 2019-02-15
    • 2019-02-13
    • 2010-10-15
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多