Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 18:05   #11
[MoNAMur]
читер
Форумчанин
 
Аватар для [MoNAMur]
 
Регистрация: 05.10.2009
Сообщений: 150
По умолчанию

альтернативный вариант:

Код:
Uses ....  ,URLMon, ....
.....

Код:
var  SourceFile,DestFile : string;
.....

Код:
SourceFile := 'http://xxxx.xx/xxxx/xxxxxx.txt';  // можно не любой файл, а не только txt
DestFile := 'yyyyy.txt';
try
     UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil);
except
    showmessage('NOOOOOOOOOOOOO =(((((');
end;
$me = $me == $me ? $me : $me;

Последний раз редактировалось [MoNAMur]; 31.05.2010 в 18:07.
[MoNAMur] вне форума Ответить с цитированием
Старый 31.05.2010, 21:53   #12
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию

это не winapi так что не подошло бы
Horus92 вне форума Ответить с цитированием
Старый 05.06.2010, 18:00   #13
Nicker
Пользователь
 
Регистрация: 09.04.2010
Сообщений: 15
По умолчанию

Вот я делал через винсокеды:

Код:
function DownloadFile(host:string; outfile:string; cookie:string; useragent:string):integer;
var
i,d,len:integer;
Data  : TStringList;
h, rb : dword;
SockAddr1:TSockAddr;
Socket1: TSocket;
Buffer1,msg:Ansistring;
Buffer2:array[1..5000] of Ansichar;
info: WSADATA;

begin
Data := TStringList.Create;
WSAStartup(makeword(2,0),info);
Socket1:=Socket(AF_INET,SOCK_STREAM,0);
SockAddr1.sin_family:=AF_INET;
SockAddr1.sin_addr.S_addr:=inet_addr(PAnsiChar('127.0.0.1')); //parsers.info
SockAddr1.sin_port:=htons(80);
connect(Socket1, SockAddr1, sizeof(SockAddr1));

Buffer1:='GET /'+host+' HTTP/1.1' + #13#10 +
'Host: domen.ru' + #13#10 +
'User-Agent: '+useragent+ #13#10 +
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + #13#10 +
'Accept-Language: ru,en-us;q=0.7,en;q=0.3' + #13#10 +
'Accept-Encoding: deflate' + #13#10 +
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' + #13#10 +
'Referer: domen.ru' + #13#10 +
'Cookie: '+cookie+' test=1;'+ #13#10 +
'Connection: close' + #13#10 +
'Cache-Control: max-age=0' + #13#10 +
#13#10;

len:=0;
send(Socket1,Buffer1[1],Length(Buffer1),0);
repeat
    FillChar(Buffer2,SizeOf(Buffer2),0);
    d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
    len:=len+d;
    for i:=1 to d do Data.Add(Buffer2[i]);
until d<=0;
try
  for i:= 0 to Data.Count - 1 do
  Msg:= Msg  + Data.Strings[i];
finally
  Data.Free;

rb:=pos(#13#10#13#10, string(Msg));
if rb > 0 then
begin
rb := rb + 4;
h := CreateFile(pchar('.\'+outfile), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(h, Msg[rb], len - rb, rb, 0);
CloseHandle(h);

end;

Closesocket(Socket1);
WSACleanup;
end;
end;
Я им капчи таскал, кому надо берите
Nicker вне форума Ответить с цитированием
Старый 25.02.2011, 13:29   #14
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Цитата:
Content-Length: 778240
С конца нужно отсчитать столько байтов и скопировать нужный кусок. (Подразумевается конечно что в ответе был всего 1 файл)
Возможно комунибудь пригодится такой подход, т.к. тема старая а инфы подобной на форуме не найти ...

Последний раз редактировалось Lime; 25.02.2011 в 13:34.
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачивание файла из интернета по ссылке smith45 Microsoft Office Excel 24 24.01.2012 13:15
Частичное скачивание файла Usov Работа с сетью в Delphi 1 19.10.2009 21:45
Скачивание файла Lemo Помощь студентам 16 28.07.2009 22:54
Скачивание случайного файла с фтп snooppy Работа с сетью в Delphi 8 16.10.2008 11:36
Скачивание файла с прогрессом CoDeR Работа с сетью в Delphi 2 22.10.2007 09:10