Итак, давайте создадим приложение, которое умеет использовать WinInet на основе протокола HTTP. Создаем приложение как AppWizard на базе диалогового окна с именем TestHTTP. На диалоговую панель поставим кнопку с именем GO и привяжем к ней функцию:
void CTestHTTPDlg::OnButton1() { // TODO: Add your control notification handler code here }
Итак. Нам нужно создать объект сессии интернет. Но сначало подключить заголовочный файл.
// TestHTTPDlg.cpp : implementation file // #include "stdafx.h" #include "TestHTTP.h" #include "TestHTTPDlg.h" #include "afxinet.h" ......
А вот теперь и сессию:
void CTestHTTPDlg::OnButton1() { CInternetSession session; }
После этого мы можем указать протокол соединения и адрес узла.
void CTestHTTPDlg::OnButton1() { CInternetSession session; CHttpConnection* pHttpCon = session.GetHttpConnection("http://www.firststeps.ru/"); }
Теперь нужно сформировать запрос к узлу:
void CTestHTTPDlg::OnButton1() { ...... CHttpConnection* pHttpCon = session.GetHttpConnection("http://www.firststeps.ru/"); CHttpFile* pFile=pHttpCon->OpenRequest("GET","default.htm"); pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n"); }
И отослать запрос:
void CTestHTTPDlg::OnButton1() { ...... CHttpFile* pFile=pHttpCon->OpenRequest("GET","default.htm"); pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n"); pFile->SendRequest(); }
Сервер в ответ пошлет информацию. Ее надо получить:
void CTestHTTPDlg::OnButton1() { ...... pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n"); pFile->SendRequest(); CString stLine; pFile->ReadString(stLine); AfxMessageBox(stLine); }
Если Вы запустите приложение, то после установки связи увидите диалоговое окно со строкой HTML. Действительно обычно это первый тег. Я немного усложнил программу, чтобы читать не одну, а много строк. Поместил на диалоговую панель ListBox, привязал к нему класс. И вот так изменил код программы.
void CTestHTTPDlg::OnButton1() { CInternetSession session; CHttpConnection* pHttpCon = session.GetHttpConnection("http://www.firststeps.ru/"); CHttpFile* pFile=pHttpCon->OpenRequest("GET","default.htm"); pFile->AddRequestHeaders("User-Agent: MyProgramm\r\n"); pFile->SendRequest(); CString stLine; while (pFile->ReadString(stLine)!=FALSE) { m_List.AddString(stLine); } }
А вот так выглядит окно во время работы: