Работа с инетом через winiet. Возвращается только часть страницы

Тема в разделе "WASM.NETWORKS", создана пользователем Rustem, 23 фев 2007.

  1. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    Приветствую!

    В общем сабж.
    Уже не знаю что делать.
    Но в браузере сохраняется вся страница ~15кило, а из моей проги только 968 байт(
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    покажи код
     
  3. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    поди InternetReadFile один раз вызываешь и все :)
     
  4. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    masquer
    Вы гений!!!)
    На самом деле один раз вызывал....
     
  5. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    а надо не один раз а в цикле, пока не вернет размер буфера нулевой и функция TRUE
     
  6. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Код (Text):
    1. BOOL DownloadFile(char *url, char *name)
    2. {
    3.     DWORD dwReadFileCount, dwWriteFileCount, dwWriteFileTotal = 0;
    4.     UINT uRetry;
    5.     BOOL bOk, bRet = FALSE;
    6.     char buff[1024];
    7.  
    8. #ifdef DBG
    9.     DbgMsg(__FILE__, __LINE__, "DownloadFile: %s %s\n", url, name);
    10. #endif
    11.  
    12.     HANDLE hFile = CreateFile(name, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS,
    13.         FILE_FLAG_WRITE_THROUGH | FILE_FLAG_SEQUENTIAL_SCAN | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM, NULL);
    14.     if (hFile == INVALID_HANDLE_VALUE)
    15.     {
    16. #ifdef DBG
    17.         DbgMsg(__FILE__, __LINE__, "CreateFile() ERROR %d\n", GetLastError());
    18. #endif 
    19.         goto end;
    20.     }
    21.  
    22.     HINTERNET hSession = InternetOpen(SAGENT, LOCAL_INTERNET_ACCESS,
    23.         NULL, INTERNET_INVALID_PORT_NUMBER, INTERNET_FLAG_DONT_CACHE);
    24.     if (hSession == NULL)
    25.     {
    26. #ifdef DBG
    27.         DbgMsg(__FILE__, __LINE__, "InternetOpen() ERROR\n");
    28. #endif
    29.         goto end;
    30.     }
    31.  
    32.     HINTERNET hSource = InternetOpenUrl(hSession, url, NULL, 0xFFFFFFFF,
    33.         INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_RAW_DATA, 0);
    34.     if (hSource == NULL)
    35.     {
    36. #ifdef DBG
    37.         DbgMsg(__FILE__, __LINE__, "InternetOpenUrl() ERROR\n");
    38. #endif
    39.         goto end;
    40.     }
    41.    
    42.     do {
    43.         uRetry = 0;
    44.         do {
    45.             dwReadFileCount = 0;
    46.             bOk = InternetReadFile(hSource, buff, sizeof(buff), &dwReadFileCount);
    47.         } while (!(dwReadFileCount || bOk || uRetry++ == 10));
    48.  
    49.         if (dwReadFileCount)
    50.         {
    51.                 dwWriteFileCount = 0;
    52.                 bOk = WriteFile(hFile, buff, dwReadFileCount, &dwWriteFileCount, NULL);
    53.                 if (bOk && dwReadFileCount == dwWriteFileCount)
    54.                     dwWriteFileTotal += dwWriteFileCount;
    55.                 else
    56.                     dwReadFileCount = 0;
    57.         }
    58.     } while (dwReadFileCount);
    59.  
    60.     bRet = TRUE;
    61.  
    62. end:
    63.  
    64.     if (hFile)
    65.         CloseHandle(hFile);
    66.    
    67.     if (hSource)
    68.         InternetCloseHandle(hSource);
    69.    
    70.     if (hSession)
    71.         InternetCloseHandle(hSession);
    72.  
    73.     return bRet;
    74. }