使用CHttpFile从服务器端正确的读取数据

2018-06-18 00:11:07来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

前段时间在给软件做升级提示模块的时候发现一个问题,就是使用CHttpFile对象无法从服务器端获取到正确的响应数据长度,无论是使用CHttpFile:: QueryInfo方法,还是使用CHttpFile:: GetLength方法,每次获取的长度都不固定,造成读取数据错误。万般无奈,最后只能采用动态数组的办法来解决这个问题,代码如下:

 

#define READ_BUFFER_LENGTH 1024

#define PAGE_BUFFER_SIZE 1024*4

 

char* CHttpClient::ReadData( CHttpFile* pFile )

{

   char* pUtf8 = (char*)malloc(PAGE_BUFFER_SIZE);

   UINT bufLen = PAGE_BUFFER_SIZE;

 

   UINT recLen = 0;

   UINT recSize = 0;

   char* pDest = pUtf8;

   while ((recLen = pFile->Read(pDest, READ_BUFFER_LENGTH)) > 0)

   {

      recSize += recLen;

      if(recSize + READ_BUFFER_LENGTH > bufLen)

      {

         bufLen += PAGE_BUFFER_SIZE;

         pUtf8 = (char*)realloc(pUtf8,bufLen);

         pDest = pUtf8 + recSize;

      }

      else

      {

         pDest += recLen;

      }

   }

   pUtf8[recSize] = '\0';

 

   return pUtf8;

}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C# Xamarin移动开发基础进修篇

下一篇:EX14 彩票中奖 (lottery.pas/c/cpp)