wininet - 如果连接被重置,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
返回时检测它的任何想法?
解决方案
推荐阅读
- docker - Hyperledger Composer - Docker Swarm
- c# - 令牌中有句点时的 JProperty SelectToken
- sql - 从 sys.procedures 中过滤掉当天更改的存储过程
- vba - 如何使用 VBA 和 Selenium 在 IE 网站上截取特定 ID
- pdf - 在 WkWebView 中下载 PDF 文件
- javascript - 使用 lodash,为什么流程中的 map 方法不起作用?
- blockchain - abi.encodePacked(...) 和 sha256(..) 如何在 Solidity 中工作?
- angular - 具有经过身份验证的树节点的 Angular 材质树
- c++ - 从转换的容器元素创建离散分布
- java - Thymeleaf:将 webjar CSS 文件的内容插入样式标签