09.09.2013, 11:44
|
|
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
рабочий пример:
Код:
var
FSession: HINTERNET;
FConnect: HINTERNET;
FRequest: HINTERNET;
szAcceptTypes: array [0..1] of PChar;
BufferLength: DWORD;
Data: DWORD;
Indx: DWORD;
FileStream: TFileStream;
Buffer: PChar;
NumberOfBytesAvailable: DWORD;
NumberOfBytesRead: DWORD;
begin
// FSession:=InternetOpen('Mozilla/4.0', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
FSession:=InternetOpen('Mozilla/4.0', INTERNET_OPEN_TYPE_PROXY, '115.25.216.6:80', nil, 0);
if FSession=nil then RaiseLastOSError;
FConnect:=InternetConnect(FSession, '2ip.ru', INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
if FConnect=nil then RaiseLastOSError;
szAcceptTypes[0]:='text/*';
szAcceptTypes[1]:=nil;
FRequest:=HttpOpenRequest(FConnect, 'GET', '/', 'HTTP/1.1', '', @szAcceptTypes, 0, 0);
if FRequest=nil then RaiseLastOSError;
if not HttpSendRequest(FRequest, nil, 0, nil, 0) then RaiseLastOSError;
FileStream:=TFileStream.Create('2ip.htm', fmCreate);
try
while True do
begin
if not InternetQueryDataAvailable(FRequest, NumberOfBytesAvailable, 0, 0) then RaiseLastOSError;
Buffer:=GetMemory(NumberOfBytesAvailable);
try
if not InternetReadFile(FRequest, Buffer, NumberOfBytesAvailable, NumberOfBytesRead) then RaiseLastOSError;
if NumberOfBytesRead=0 then Break;
FileStream.Write(Buffer^, NumberOfBytesRead);
finally
FreeMemory(Buffer);
end;
end;
finally
FileStream.Free;
end;
BufferLength:=SizeOf(Data);
Indx:=0;
if not HttpQueryInfo(FRequest, HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE, @Data, BufferLength, Indx) then RaiseLastOSError;
ShowMessage(IntToStr(Data));
InternetCloseHandle(FRequest);
InternetCloseHandle(FConnect);
InternetCloseHandle(FSession);
end;
косяки доработать самому)
__________________
Пишу программы за еду.
__________________
|