C++ WinHTTP API 读取数据

标签 c++ winapi winhttp

我正在尝试从网页下载数据然后解析它,问题是我无法获取 pszoutbuffer 的值(ZeroMemory 函数将其删除)我采取了来自 MSDN 示例的代码

void  http_connect::read_data(void)
{

   // Keep checking for data until there is nothing left.
   if( bResults )
   {

      do
      {
          // Check for available data.
          dwSize = 0;
          if (!WinHttpQueryDataAvailable( hRequest, &dwSize))
              printf( "Error %u in WinHttpQueryDataAvailable.\n",
              GetLastError());

         // Allocate space for the buffer.
         pszOutBuffer = new char[dwSize+1];
         if (!pszOutBuffer)
         {
             printf("Out of memory\n");
             dwSize=0;
         }
         else
         {
             // Read the Data.
             ZeroMemory(pszOutBuffer, dwSize+1);

             if (!WinHttpReadData( hRequest, (LPVOID)pszOutBuffer, 
                              dwSize, &dwDownloaded))
            {
                  printf( "Error %u in WinHttpReadData.\n", 
                    GetLastError());
            }


         }

      } while( dwSize > 0 );
   }
}

最佳答案

我认为在 WinHttpReadData 之后,您应该立即将 pszOutBuffer 的内容附加到一个字符串中,以便您稍后可以使用它。
正如您所说, pszOutBuffer 在每次循环迭代中都会不断被覆盖。看起来它只是临时存储空间,供您复制到永久存储空间。

关于C++ WinHTTP API 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060249/

相关文章:

c++ - int 的 Arduino C++ vector

c - 将图像加载到没有 ImageList 的 ListView 中?

Paypal 沙盒阻止 WinHTTP.WinHTTPRequest.5.1

.net - .NET 中的 WinHttp.WinHttpRequest

c++ - 在C++中,我遇到无法理解的编译器错误

c++ - 出站 SMTP 数据包捕获的最佳操作系统应用程序?

c++ - 如何将预定的一组模板实例化添加到函数模板中

c++ - 如何启动内存有限的进程?

c++ - SndVol 如何改变给定 Audio Session 的音量级别?

excel - VBA WinHTTP从受密码保护的https网站下载文件