各位大哥大姐,我用vc++ sdk编了一个函数,为什么我在第一次调用这个函数的时候,可以保存正确的页面,可以是第二次调用的时候,保存页面就出现400 Bad Request的错误(肯定可以打开的页面),说我提交的错误(Your browser sent a request that this server could not understand. Request header field is missing colon separator.)我查下来可能是微软的InternetReadFile的问题,只要我调用一次InternetReadFile第二次InternetOpenUrl肯定出错。微软的msdn中也说了(This function always fulfills the user's request. If more data is requested than is available, the function waits until enough data to complete the request is available. The only time that less data is returned than requested is when the end of the file has been reached. 
),小弟不才,请问各位大侠在保持使用InternetOpenUrl和InternetReadFile这两个函数的基础上如何修改程序,谢谢。
void GetWebHtmlThread(void* pWebLink)
{
  HINTERNET hIntSession, hHttpSesson;
  DWORD     dwNumberOfBytesRead;
  CHAR      szHtmlBuffer[512];
  char*     pszWebHtmlBuffer;
  
  BOOL tempBool;  pszWebHtmlBuffer = szWebHtmlBuffer;  hIntSession = InternetOpen(szWebHtmlBuffer, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);  assert(hIntSession);
  
  hHttpSesson = InternetOpenUrl(hIntSession, (char*)pWebLink, NULL, NULL, 
                  INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_KEEP_CONNECTION | 
                  INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE | 
                  INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_NO_CACHE_WRITE, NULL);  assert(hHttpSesson);
  
  ZeroMemory(szWebHtmlBuffer, 10240);  FILE *fp;
  fp = fopen("tempbuffer.htm", "w");
  DWORD countbyte = 0;
  
  //就是这里,只要一调用InternetReadFile那么第二次调用InternetOpenUrl
  //就返回400 Bad   Request
  do {
    InternetReadFile(hHttpSesson, szHtmlBuffer, 512, &dwNumberOfBytesRead);
    strncpy(pszWebHtmlBuffer, szHtmlBuffer, dwNumberOfBytesRead);
    pszWebHtmlBuffer += dwNumberOfBytesRead;
    countbyte += dwNumberOfBytesRead;
    fwrite(szHtmlBuffer, dwNumberOfBytesRead, 1, fp);
  } while(dwNumberOfBytesRead);
  
  fclose(fp);  tempBool = InternetCloseHandle(hHttpSesson);
  tempBool = InternetCloseHandle(hIntSession);