InternetReadFile 问题(错误 87 - 参数不正确)

Posted

技术标签:

【中文标题】InternetReadFile 问题(错误 87 - 参数不正确)【英文标题】:InternetReadFile Problem (error 87 - The parameter is incorrect) 【发布时间】:2009-02-06 19:56:16 【问题描述】:

我在使用 InternetReadFile 时遇到问题,如果我在没有代理的计算机上运行应用程序,应用程序运行正常,但如果我尝试在使用代理的计算机上使用,我收到错误 87(参数不正确) .

这是我的代码:

conHandle = InternetOpen("Test", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); 
... 
hFile = InternetOpenUrl(conHandle, url.c_str(), NULL, 0, INTERNET_FLAG_RELOAD, 0);  
... 

if (!InternetReadFile(hFile, buffer, maxBufferSize, &size)) 
 
    // error 
 

我也试过用:

InternetOpen("Test", INTERNET_OPEN_TYPE_PROXY, "proxystr", NULL, 0); 

但也没有成功。

有人知道我做错了什么吗?

谢谢, 埃里克

【问题讨论】:

【参考方案1】:

您需要在循环中不断调用 InternetReadFile,直到它返回 TRUE 并且读取的字节数为 0。这通常意味着至少 2 次 InternetReadFile 调用。

while ( InternetReadFile( hFile, buffer, maxBufferSize, &size ) == FALSE || size > 0 )

   // process buffer contents.
   // for ex: write the contents of buffer to a temp file for example.

【讨论】:

【参考方案2】:

应该是:

while (InternetReadFile(hFile, buffer, maxBufferSize, &size) == TRUE || size > 0)

   // process buffer contents.
   // for ex: write the contents of buffer to a temp file for example.

【讨论】:

以上是关于InternetReadFile 问题(错误 87 - 参数不正确)的主要内容,如果未能解决你的问题,请参考以下文章

异步使用 InternetReadFile() 的正确方法

InternetReadFile 因分块响应而失败

InternetReadFile() 似乎没有读取互联网数据

InternetReadFile 返回损坏的响应

InternetReadFile 仅读取 10kb

InternetReadFile 的共同平均缓冲区大小是多少?