首页 > 解决方案 > 如果连接被重置,HttpSendRequest 会自动重试吗?

问题描述

我正在 Windows 10 桌面上运行用 C++ 编写的 64 位 Windows 应用程序。用于HttpSendRequest调用我们的一项服务。我知道通过特定的调用,服务器正在放弃对某个问题的连接,但似乎 HttpSendRequest 然后自动进行了额外的调用,然后在第二次调用后才返回。

细节:

向 http://myserver/myservice/request_params 发出 PUT 请求

这会在服务器上创建一个参数集,并返回一个 GUID

向 http://myserver/myservice/report/aaa-bbb-ccc-ddd 发出 GET 请求

其中 aaa-bbb-ccc-ddd 是 GUID,应该是一次性使用请求 ID。

该服务在执行初始 GET 请求时遇到问题,并断开连接。我知道这种情况正在发生,因为当我运行 Wireshark 时,我可以看到对 GET 端点进行了两次调用。第一次,TCP RST 返回并关闭连接。

我已经单步执行了我们的代码并验证了我们正在对 HttpSendRequest 进行一次调用,但这会返回 true,状态为 404,并且服务器将在第二次调用 GET 端点时发出错误消息。WinINET 似乎看到了连接断开,并自动重试。

在客户端,我们希望 HttpSendRequest 在第一次调用时返回 false。

关于如何关闭此行为或在HttpSendRequest返回时检测它的任何想法?

标签: wininet

解决方案


推荐阅读