如何在HttpEndRequest上配置超时?

How do I configure the timeout on HttpEndRequest?

本文关键字:配置 超时 HttpEndRequest      更新时间:2023-10-16

背景:我正在维护一个旧的c++应用程序,它与我公司的服务器通信。公司里没有人(包括我)对c++或其他正在使用的技术有任何重要的经验。

问题:我正试图上传一个代码看起来像这样的文件:

if(HttpSendRequestEx(hReq, &InBuf, NULL, HSR_INITIATE, 0))
{
    unsigned long ulWrote;
    BOOL bWrote;
    bWrote = InternetWriteFile(hReq, postData, postDataLength, &ulWrote);
    if(bWrote)
    {
        if(!HttpEndRequest(hReq, NULL, 0, 0))
        {
            DWORD errorCode = GetLastError(); // 12002 - timeout
        }
    }
}

这里有很多其他的错误处理,但我已经把它剥离到我看到问题的地方。

小文件上传没有问题,大文件(~25MB)遇到超时。即使发生了超时,很多时候文件都会上传成功,所以我不认为这是服务器端的问题。只是抑制或忽略错误似乎是错误的,但我还没有找到任何方法来设置超时到一个更合理的水平

WININET提供InternetSetOption()来控制其行为,在您的情况下,请查看INTERNET_OPTION_SEND_TIMEOUT标志。