Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: HTTP-wrapper ?  (Прочитано 9087 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« : 17-05-2005 14:23 » 

Какие http-wrapper классы вы знаете? Какие порекомендуете?
У меня сначала было желание все самому сделать через сокеты. Но потом как пошли странички в разной кодировке, а потом еще и файлы, то желание постепенно исчезло.
Знаю про WinInet, но у меня против него небольшое предубеждение после опыта на Delphi...
Задача - просто скачивать странички и файлы из Инета и их обрабатывать, парсить, без отображения.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
SSW
Гость
« Ответ #1 : 18-05-2005 15:26 » 

Если просто закачать страничку, а потом что-то делать с ней, то....
Я когда-то делал так :
Код:
void CSeekerDlg::OnGO() 
{

CHttpFile*        pFile;
 CInternetSession* pSession;
 CString         m_urldomen, m_url,str_m, col, line, L_mail;

int start_find_G, end_find_G, i, flag, count, idomen;
CFile             outfile;
UINT              read;
char              buff[1024];
CString   pString, st_i, st_s, st_k;




m_urldomen="http://www.vinbazar.com/";

 UpdateData(TRUE);
 

 pSession = new CInternetSession;
 
 pFile = reinterpret_cast<CHttpFile*>(pSession -> OpenURL(_T(m_urldomen), 1, INTERNET_FLAG_TRANSFER_BINARY));
 if(!pFile) {
  return;
 }

 
// CONVERTION  from pFile to m_edit
for (i=0; i<4000 && pFile ->ReadString(line); i++)
{m_edit +=line;}


start_find_G=0;

while (m_edit.Find("href=\"",start_find_G)!=-1)
{
start_find_G=m_edit.Find("href=\"",start_find_G)+6;
end_find_G=m_edit.Find("\"",start_find_G);
line=m_edit.Mid(start_find_G,end_find_G-start_find_G);
..........
..........
..........
..........
..........
..........
}
}

Смысл в том, что у тебя в одной строке будет HTML код. С которым чё хочеш то и делай.

Если с примера не разберешь, могу выслать проект.

P.S. за красоту кода просьба не пинать.
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #2 : 19-05-2005 06:56 » 

В принципе, подойдет... Спасибо.
А если это будет бинарник?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
SSW
Гость
« Ответ #3 : 19-05-2005 15:26 » 

Ты имеешь ввыду, можешь ли ты таким образом закатать какой-то файл (картинки и т.д. и т.п.)?
Незнаю, не пробовал.
У этой функции есть флаги, я думаю, стоит поэксперементировать
Цитата
dwFlags
The flags describing how to handle this connection. See Remarks for more information about the valid flags. The valid flags are:
INTERNET_FLAG_TRANSFER_ASCII   The default. Transfer the file as ASCII text.
INTERNET_FLAG_TRANSFER_BINARY   Transfer the file as a binary file.
INTERNET_FLAG_RELOAD   Get the data from the wire even if it is locally cached.
INTERNET_FLAG_DONT_CACHE   Do not cache the data, either locally or in any gateways.
INTERNET_FLAG_SECURE   This flag is applicable to HTTP requests only. It requests secure transactions on the wire with Secure Sockets Layer or PCT.
INTERNET_OPEN_FLAG_USE_EXISTING_CONNECT   If possible, reuse the existing connections to the server for new requests generated by OpenUrl instead of creating a new session for each connection request.
INTERNET_FLAG_PASSIVE   Used for an FTP site. Uses passive FTP semantics. Used with CInternetConnection of OpenURL.
Записан
Diletant
Помогающий

de
Offline Offline

« Ответ #4 : 02-06-2005 08:53 » new

Если есть предубеждение против WinInet, то используемые в коде классы MFC есть ничто иное как обертки функций WinInet. Если нужно просто скачивать файлы, то есть еще функции URLDownloadToCacheFile() и URLDownloadToFile().
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #5 : 02-06-2005 09:06 » 

Спасибо, я уже реализовал через сокеты.
Тогда еще тут вопрос - как послать HTTP-запрос сокетом через http-прокси?
Каков формат запроса?
Я предполагаю что он похож, просто коннектимся к прокси, а запрашиваем URL? Приведите пример, пожалуйста?
У меня есть куча RFC, но проще спросить здесь, чем перелопачивать эту гору.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Diletant
Помогающий

de
Offline Offline

« Ответ #6 : 02-06-2005 10:45 » 

Если мне не изменяет память слегка меняется структура запроса "GET". T.e.коннектиться надо, естетственно к прокси, в качестве параметра к GET полный URL c "http://" в начале, ну и дополнительные строки с "Proxy-Aithorization" и "Proxy-Connection"
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines