如果未读取响应,则 HttpURLConnection 不会发送请求

HttpURLConnection does not send a request if the response is not read

我有一个简单的 POST 请求:

        val url = URL(SEND_URL)

        val connection = url.openConnection() as HttpURLConnection

        connection.doOutput = true

        connection.addRequestProperty("Authorization", "...")
        connection.addRequestProperty("Content-Type", "application/json")

        val messageJson = Gson().toJson(message)

        val outputStream = OutputStreamWriter(connection.outputStream, "UTF-8")

        outputStream.write(messageJson)
        outputStream.flush()
        outputStream.close()

        connection.connect()

它不发送任何东西。

当我添加(而不是connection.connect())

        connection.responseCode
        connection.disconnect()

有效。

有人能给我解释一下为什么会这样吗?我不需要阅读响应或 responseCode 但没有它,我的请求不会被发送。

这就是 HttpURLConnection 的工作方式。在您尝试读取响应之前,它不会发送请求。您 必须 至少尝试阅读回复,即使您对回复不感兴趣(尽管,老实说,您为什么不检查回复以查看您的 POST 请求成功了吗?)

查看此问答: