改成这样就行了。
TRY
{
    CInternetSession session;
    CHttpFile* pInternetFile=(CHttpFile*)session.OpenURL("http://www.elong.com");
    do{
        pInternetFile->QueryInfoStatusCode(ret);
    }while(ret != HTTP_STATUS_OK);
    DWORD dwFileLength=pInternetFile->GetLength();
    buf = new char[dwFileLength];
    pInternetFile->Read(buf,dwFileLength);
    pInternetFile->Close();
    session.Close();
}

解决方案 »

  1.   

    当HTTP文件未传输完时,用GetLength()得到的不是请求文件的实际长度。
      

  2.   

    高手,谢谢!
    原来OpenURL()不是阻塞函数呀!
      

  3.   

    我也是刚做Internet编程,别叫我高手,我正在找方法,如果你找到了方法,记得告诉我一声。
      

  4.   

    老哥,试试这个
    char buf[16];
    DWORD size, len = 16;
    BOOL b = pInternetFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, buf, &len, NULL);
    if(b)
        size = len+1;
    这回得到的是文件的实际长度。