Шаг 190 - WinInet

Для работы с Интернетом есть классы WinInet - Windows Internet Externsion. Общая идея этих классов упростить работу с интернетом не вдаваясь в подробности работы с сокетами и протоколом TCP/IP. Для работы с классами WinInet описание их нужно подключить

#include "afxinet.h"

Основой является класс CInternetSession, который используется для установки связи и инициализации соединения. Работа начинается с создания объекта сессии. Параметров у конструктора много, но самое интересное, что они могут быть все по умолчанию :-). Можно указать имя программы, которая производит выхоз как в примере ниже, но можно и этого не делать указав NULL тогда имя классов будет получено самостоятельно путем вызова AfxGetAppName.

CInternetSession se("My Session");	

Следующим шагом будет создание объекта CStdioFile.

CStdioFile* pFile = NULL;

При открытии сессии вернется указатель этого класса. Вернувшийся указатель нужно проверить на NULL. Вот как можно это сделать

CStdioFile* pFile = NULL;
pFile = se.OpenURL("http://www.firststeps.ru/");
if (pFile != NULL)
{
}

А вот теперь можно и читать строки.

{
  pFile->ReadString(cs);
  pFile->Close();
}

В данном случае появится только одна первая строка HTML. При необходимости прочитать весь документ можно сделать так.

while(pFile->ReadString(cs))
{
 ........
}

После получения файла сесию нужно закрыть.

se.Close();

Вот такой он WinInet, но он может намного больше, например, перехватить функцию OnStatusCallBack для получения информации о ходе соединения. Это виртуальная функция член класса CInternetSession.

virtual void OnStatusCallback( DWORD dwContext, 
	DWORD dwInternetStatus, LPVOID lpvStatusInformation,
	DWORD dwStatusInformationLength );

Так же класс CInternetSession умеет устанавливать специфические соединения. Обращения к таким соединениям производится идеологически, также создается файл и ему присваивается указатель соединения, но только для каждого типа соединения свой класс.

GetGopherConnection -> CGopherFileFind
GetHttpConnection -> CHttpFile
GetFtpConnection -> CFtpConnection

Функции связанные с работой WinInet находятся в WININET.DLL. То есть она должна быть в системе для корректной работы, хотя я сомневаюсь, что есть компьютер, на котором ее нет :-)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.