如何忽略 Indy 中 POST 请求的响应?

Posted

技术标签:

【中文标题】如何忽略 Indy 中 POST 请求的响应?【英文标题】:How do I ignore the response of a POST request in Indy? 【发布时间】:2013-05-15 02:09:23 【问题描述】:

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

【问题讨论】:

完成。如果您对自己的问题更加谨慎并具体说明问题,那么将来会更好,这样一开始就不会出现cmets和downvotes。 (如果您一开始就付出更多努力来询问他们,我们就不必解决您的问题以使您免于关闭或否决。):-) 删除了我的反对票和评论,但无法删除我的近距离投票。你确实需要小心你如何表达你的问题,因为你得到的正是你所问的。 我不确定我是否理解这个问题。你想异步使用 Post() 函数而不是等待它返回结果吗?如果是这样,我怀疑 Indy 是否可行,我看到的唯一方法是在单独的线程中执行 IdHTTP.Post(),或者使用另一个可以执行异步发布的组件(例如 ICS:link) 嗯,我怀疑现有组件是否可行,至少我知道的那些。检查此link 和答案中的代码。发送请求后尝试剥离他等待响应的部分。 服务器是你的吗?你能修改服务器的代码吗?因为如果是这样,简单的解决方案是一开始就不发回任何东西。但很可能它不是你的。 【参考方案1】:

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

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

【讨论】:

仅获取标题仍然少于 html 内容。谢谢你的回答。

以上是关于如何忽略 Indy 中 POST 请求的响应?的主要内容,如果未能解决你的问题,请参考以下文章

indy求助post登陆百.度https

在使用 Indy 的 SSI 中,验证者如何选择证明请求的模式?

Indy Post 到 discord webhook 给出了错误的请求 400

如何在graphql中返回post请求的响应

如何在 jquery 中读取 post 请求的响应?

如何不让struts2 不响应get请求,只响应post请求?