Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Настройки Explorera мешают работе программы, При Stay Offline не работает SendRequest 
:(
    Опции темы
alexeyL
Дата 4.3.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.3.2008

Репутация: нет
Всего: нет



Есть следующий код (обычный загрузчик файлов из интернета):
Код

void Thread_LoadFile( void *dummy)
{
    Sleep(50);  
    CInternetSession session(_T(""));
    CHttpConnection* pServer = NULL;
    CHttpFile* pFile = NULL;
    INTERNET_PORT nPort;
    DWORD dwServiceType;
    CString strObject;
    CString strServerName;  

    try
    {
        char path[255];
        
        sprintf(path,"http://www.mysite.ru/1.exe");

        AfxParseURL((LPCTSTR)path, dwServiceType, strServerName, strObject, nPort);

        pServer = session.GetHttpConnection(strServerName, nPort);
        pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE);

        CHAR szHeaders[255]; 
        sprintf(szHeaders,"Accept: */*\r\nUser-Agent: Downloader 1.0\r\n");

        pFile->AddRequestHeaders(szHeaders);//
        pFile->SendRequest();//посылаем запрос на сервер

        DWORD dwRet;
        pFile->QueryInfoStatusCode(dwRet);//проверяем код, который вернул сервер

        if(dwRet == HTTP_STATUS_OK)// HTTP_STATUS_OK = код 200
        {
            CString strSize;
            pFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH , strSize);//узнаем размер архива
                
            int bytesread = 0;
            int pos = 0;
            
            CString szDestPath;
            szDestPath.Format("temp.exe");

            FILE *fDestFile;
            fDestFile = fopen(szDestPath ,"w+b");

            char strbuf[512];
            while (pFile->Read(strbuf, 512))//начинаем качать архив
            {                               
                if(fDestFile) bytesread = fwrite( strbuf, sizeof( char ), 512, fDestFile);
                pos+=bytesread;                                         
            }
            if(fDestFile) fclose( fDestFile );
            
            Sleep(1000);
            ShellExecute(NULL,"", szDestPath, "", "", SW_SHOW);//запускаем файл                         
            
            pFile->Close();
            pServer->Close();
        }
        catch (CInternetException* pEx)
        {
            pEx->Delete();
        }                   
    }   
    // всё скачали - выходим.
    if (pFile != NULL)      delete pFile;
    if (pServer != NULL)    delete pServer;
    session.Close();
}


При врубленном интернете, вызывая pFile->SendRequest(), попадаем в catch (CInternetException* pEx). Такое происходит только тогда, когда браузер Internet Explorer находится в состоянии Stay offline (или браузер Maxthon). То есть поставив галочку в Maxthon "Автономно" 
всегда попадаем в catch. Галочку убираем в браузере, код начинает работать. Как эту зависимость устранить?

 Попробовал в CInternetSession session(_T("")) поменять параметры соединения с дефолтных INTERNET_OPEN_TYPE_PRECONFIG на INTERNET_OPEN_TYPE_DIRECT - не помогло. 
PM MAIL   Вверх
lemax
Дата 3.12.2008, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 14.10.2007

Репутация: нет
Всего: 1



Перед работой с интернетом можно проверить 

Код

InternetCheckConnection(...)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.