背景:我正在维护一个旧的 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()
至 control它的行为,在你的情况下看看 INTERNET_OPTION_SEND_TIMEOUT
标志。
关于c++ - 如何配置 HttpEndRequest 的超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308720/