![]() |
Получение странцы содержащей ОДИН Gif
Не могу разобраться в чем проблема?
-посылаю запрос серверу: Код:
char url[] = "/pic.aspx?rand=143"; Код:
HTTP/1.1 200 OK-далее пытаюсь ее получить Код:
unsigned int x;???ПОЧЕМУ??? |
часть картинки была принята вместе с http-ответом сервера
|
Цитата:
|
прикольно 8))).....
какойто ответ сервера 8)) а потом видимо там же получают код картинки в MIME? и чего прямо mime64 на диск "валят"???? код в студию блин.... нифика не понятно! Во блин мучаются то не по децки..... настоящие пацаны Wininet используют 8))) .... хакиры чистый socket ,чтоб поразмяться с mime и кровушки отдать с gzip :D |
thetuk - а вообще что за это язык програм??? ))
|
Цитата:
|
Цитата:
|
// создаём переменную session и открываем сессию ANDY
CInternetSession session( _T( "Delimiter" ), PRE_CONFIG_INTERNET_ACCESS ); // создаём переменную pServer класса CHttpConnection CHttpConnection* pServer = NULL; // создаём переменную pFile класса CHttpFile CHttpFile* pFile = NULL; //Обратите внимание, что все запросы к функциям членам WinInet классов включены в блок программы TRY. //Это сделано так, потому что при соединении с каким либо URL есть риск неправильной ссылки, //особенно, когда Вы полагаете, что пользователь сам печатает URL. //Другая проблема - времена ожидания, которые возникают, когда требуемый URL в настоящее время //неспособен обслужить подключение. //Так же обработка WinInet исключений, которые представлены в классе //CInternetException, является важной частью создания Internet приложения под MFC. try { // функция AfxParseURL получает данные с указанного URL ( у нас m_url ) об сервере, // объекте, типе сервиса и порте if ( AfxParseURL( m_url, dwServiceType, strServerName, strObject, nPort ) == 0 ) { // Устанавливаем подключение по HTTP протоклолу. pServer = session.GetHttpConnection( strServerName, nPort ); // посылаем запрос об объекте ( strObject ) pFile = pServer->OpenRequest( CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_DONT_CACHE ); // Добавляем заголовок к HTTP запросу pFile->AddRequestHeaders( _T( "Accept: */*\r\nUser-Agent: Delimiter\r\n" ) ); // посылаем запрос pFile->SendRequest( ); DWORD dwRet; // переменная для хранения кода состояния pFile->QueryInfoStatusCode( dwRet ); // записываем код состояния в dwRet // вывод данных CString strHeader; // переменная для хранения полученного заголовока запроса pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strHeader); // записываем заголовок в strHeader // вывод данных // m_mes += "Header = "; // m_mes += strHeader; // если код состояния не равен 200, то выходим из функции if( dwRet != 200 ) { delete[] mytempbuf; session.Close( ); return 0; } // ---------------------------------------------------------- // проверка выбора файла для записи fptr=fopen(my_path,"wb"); int allRead = 0; // переменная для хранения общего числи считанных байт int nRead = pFile->Read( mytempbuf, 1024 ); // считываем первые 1024 байта в буфер. // переменная nRead хранит количество // считанных байт allRead += nRead; // обновляем общее число считанных байт // вывод данных // записываем буфер из nRead байт в файл fwrite(mytempbuf,1,nRead,fptr); // цикл считывания, пока nRead не будет равняться нулю while ( nRead > 0 ) { nRead = pFile->Read( mytempbuf, 1024 ); if( nRead != 0 ) { fwrite(mytempbuf,1,nRead,fptr); allRead += nRead; } } fclose(fptr); } catch ( CInternetException* pEx ) { // Если произошла ошибка в WinInet // вывод ошибки char szErr[1024]; pEx->GetErrorMessage( szErr, 1024 ); pEx->Delete( ); // удаление переменной класса CInternetException if ( pFile != NULL ) delete pFile; // закрываем Internet файл if ( pServer != NULL ) delete pServer; // закрываем сервер delete[] mytempbuf; Sleep(50); return 0; } if ( pFile != NULL ) delete pFile; // закрываем Internet файл if ( pServer != NULL ) delete pServer; // закрываем сервер session.Close( ); // закрываем сессию delete[] mytempbuf; |
покажи как ты ответ получаеш
|
Цитата:
recv(s, response, 1024,0); |
| Время: 19:32 |