如何使用 Indy (10) 发送 POST 请求,然后忽略结果或低级 API recv
?我问是因为我不需要结果,我想节省带宽。
问问题
1040 次
1 回答
2
使用 时TIdHTTP
,您不能忽略recv()
,但至少可以忽略响应数据。Post()
调用将AResponseContent: TStream
参数作为输出的重载版本,并将其设置TStream
为nil
. TIdHTTP
仍然会从套接字读取响应头和正文数据,但它会丢弃它为正文读取的任何内容。如果使用 HTTP keep-alives,这一点很重要,因为它使连接保持同步,因此后续 HTTP 请求可以继续在同一连接上发送。如果你没有使用 HTTP keep-alives,那么连接将在Post()
退出前关闭。如果你想尽快关闭连接,你可以尝试在TIdHTTP.OnWork
什么时候引发AWorkMode
异常wmRead
,但这可能效果不佳,尤其是在使用 HTTP 重定向的情况下。
如果您只想发送 POST 请求并完全忽略响应,则最好TIdTCPClient
改为手动发送您自己的 POST 请求,然后立即关闭连接。
于 2013-05-15T16:26:04.933 回答