0

如何使用 Indy (10) 发送 POST 请求,然后忽略结果或低级 API recv?我问是因为我不需要结果,我想节省带宽。

4

1 回答 1

2

使用 时TIdHTTP,您不能忽略recv(),但至少可以忽略响应数据。Post()调用将AResponseContent: TStream参数作为输出的重载版本,并将其设置TStreamnil. TIdHTTP仍然会从套接字读取响应头和正文数据,但它会丢弃它为正文读取的任何内容。如果使用 HTTP keep-alives,这一点很重要,因为它使连接保持同步,因此后续 HTTP 请求可以继续在同一连接上发送。如果你没有使用 HTTP keep-alives,那么连接将在Post()退出前关闭。如果你想尽快关闭连接,你可以尝试在TIdHTTP.OnWork什么时候引发AWorkMode异常wmRead,但这可能效果不佳,尤其是在使用 HTTP 重定向的情况下。

如果您只想发送 POST 请求并完全忽略响应,则最好TIdTCPClient改为手动发送您自己的 POST 请求,然后立即关闭连接。

于 2013-05-15T16:26:04.933 回答