如何在HttpEndRequest上配置超时?

时间:2014-03-10 18:48:21

标签: c++ winapi timeout

背景:我正在维护一个与我公司服务器通信的旧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)遇到超时。即使发生超时,文件也会成功上传很多次,所以我认为这不是服务器端的问题。只是抑制或忽略错误似乎是错误的,但我没有找到任何方法将超时设置为更合理的水平。

1 个答案:

答案 0 :(得分:3)

WININET提供InternetSetOption()control的行为,在您的情况下查看INTERNET_OPTION_SEND_TIMEOUT标记。