← К каталогу
Исходный код · ID 2384

CDownloadFile

cdownloadfile.mqh
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

CDownloadFile — это библиотека на языке MQL для скачивания содержимого веб-страниц. Она использует Windows API WinInet через импорт функций из wininet.dll для установления HTTP-соединений и получения данных по указанному URL.

Основной метод GrabWeb принимает URL и строковый параметр для хранения результата. Метод открывает соединение с сервером, читает данные порциями фиксированного размера, накапливает их в строке и возвращает логический результат успешности операции.

Библиотека поддерживает режим отладки для вывода промежуточных данных, а также различные типы подключений: прямое, через предварительную конфигурацию Internet Explorer и через прокси-сервер. Конструктор задаёт начальные значения параметров типов подключения и размера буфера чтения.

Состав библиотеки

Классов: 1 · методов: 1 · конструкторов: 1 · деструкторов: 0 · отдельных функций: 0

Классы
Класс class CDownloadFile

Класс CDownloadFile — обёртка для скачивания веб-контента через Windows API WinInet

Методы и конструкторы
Конструктор · CDownloadFile CDownloadFile()

Конструктор CDownloadFile — создание экземпляра с инициализацией параметров подключения и буфера

Метод · CDownloadFile bool GrabWeb(string strUrl, string& strWebPage)

GrabWeb — скачивание содержимого веб-страницы по указанному URL в строковый параметр

Получить полный код

Поиск по коду файла

#property strict

#import "wininet.dll"

#define INTERNET_FLAG_PRAGMA_NOCACHE    0x00000100 // Forces the request to be resolved by the origin server, even if a cached copy exists on the proxy.
#define INTERNET_FLAG_NO_CACHE_WRITE    0x04000000 // Does not add the returned entity to the cache. 
#define INTERNET_FLAG_RELOAD            0x80000000 // Forces a download of the requested file, object, or directory listing from the origin server, not from the cache.

int InternetOpenA(
	uchar & sAgent[],
	int		lAccessType,
	uchar & sProxyName[],
	uchar & sProxyBypass[],
	int 	lFlags=0
);

int InternetOpenUrlA(
	int 	hInternetSession,
	uchar & sUrl[], 
	uchar & sHeaders[],
	int 	lHeadersLength=0,
	int 	lFlags=0,
	int 	lContext=0 
);

int InternetReadFile(
	int 	hFile,
	uchar & sBuffer[],
	int 	lNumBytesToRead,
	int& 	lNumberOfBytesRead[]
);

int InternetCloseHandle(
	int 	hInet
);
#import

class CDownloadFile
{
private:
   bool _winInetDebug;
   int _hSession_IEType;
   int _hSession_Direct;
   int _Internet_Open_Type_Preconfig;
   int _Internet_Open_Type_Direct;
   int _Internet_Open_Type_Proxy;
   int _Buffer_LEN;

   int InternetOpenAFIX(
   	string 	sAgent,
   	int		lAccessType,
   	string 	sProxyName="",
   	string 	sProxyBypass="",
   	int 	lFlags=0
   )
   {
      uchar sAgentFIX[], sProxyNameFIX[], sProxyBypassFIX[];
      StringToCharArray(sAgent, sAgentFIX);
      StringToCharArray(sProxyName, sProxyNameFIX);
      StringToCharArray(sProxyBypass, sProxyBypassFIX);
      return(InternetOpenA(sAgentFIX,lAccessType,sProxyNameFIX,sProxyBypassFIX,lFlags));
   }

   int InternetOpenUrlAFIX(
   	int 	hInternetSession,
   	string 	sUrl, 
   	string 	sHeaders="",
   	int 	lHeadersLength=0,
   	int 	lFlags=0,
   	int 	lContext=0 
   )
   {
      uchar sUrlFIX[], sHeadersFIX[];
      StringToCharArray(sUrl, sUrlFIX);
      StringToCharArray(sHeaders, sHeadersFIX);
      return(InternetOpenUrlA(hInternetSession,sUrlFIX,sHeadersFIX,lHeadersLength,lFlags,lContext));
   }

   int InternetReadFileFIX(
   	int 	hFile,
   	string 	&sBuffer,
   	int 	lNumBytesToRead,
   	int& 	lNumberOfBytesRead[]
   )
   {
      uchar sBufferFIX[];
      ArrayResize(sBufferFIX,lNumBytesToRead);
      int result=InternetReadFile(hFile,sBufferFIX,lNumBytesToRead,lNumberOfBytesRead);
      sBuffer=CharArrayToString(sBufferF

Показано первые 50% кода (символов: 3471)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
347,10₽ ≈ $4.24