如果未读取响应,则 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 请求成功了吗?)
查看此问答:
我有一个简单的 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 请求成功了吗?)
查看此问答: