Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

WinAPI + скачивание файла по http (просто)   Найти похожие ветки 

 
Dima   (2008-03-13 19:37) [0]

Здравствуйте.

Подскажите пожалуйста, в чем моя ошибка?
Представленный ниже код компилируется, но работает не правильно (файл по http не скачивается).

program AK;
{$APPTYPE CONSOLE}
uses Windows, SysUtils, Messages, WinSock;
var
 F: TextFile;
 s: TSocket;
 data: TWSAData;
 Addr: TSockAddr;
 Recived: Integer;
 Buff: array [0..1023] of Char;
 HTTPRequest,HTTPResponse,Name,IP,Path: string;
begin
 IP:= "192.168.0.2";
 Name:= "192.168.0.2";
 Path:= "/files/file.exe";
 WSAStartup($101, data);
 s:=socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
 Addr.sin_family:=AF_Inet;
 Addr.sin_port:=htons(80);
 Addr.sin_addr.S_addr:=inet_addr(PAnsiChar(IP));
 if (connect(s,Addr,SizeOf(TSockAddr)) <> SOCKET_ERROR) then
   begin
     HTTPRequest:="GET "+Path+" HTTP/1.1"+#13#10+"Host: "+Name+#13#10+"Connection: Close"+#13#10#13#10;
     send(s, HTTPRequest[1], length(HTTPRequest),0);
     HTTPResponse:= "";
     Recived:= 1;
     while Recived <> 0 do
       begin
         Recived:= recv(s, Buff, Length(Buff), 0);
         HTTPResponse:= HTTPResponse + Copy (Buff,0,Recived);
       end;
     closesocket(s);
     AssignFile(F, "file.exe");
     Rewrite(F);
     Writeln(F, HTTPResponse);
     CloseFile(F);
   end;
 WSACleanup();
end.


Спасибо.
С уважением,
Дима


 
Slym ©   (2008-03-14 04:25) [1]

все работает... ты не отрезаешь заголовок у ответа аля "HTTP/1.1 200 OK" и т.д.


 
Slym ©   (2008-03-14 04:30) [2]

Slym ©   (14.03.08 4:25) [1]
отрезать нужно начало до #13#10#13#10 включительно
    Recived:=pos(#13#10#13#10,HTTPResponse);
    if Recived<>0 then
     HTTPResponse:=copy(HTTPResponse,Recived+4,MaxInt);


 
Dian   (2008-10-08 03:27) [3]

Через строки будет работать только с текстовыми файлами


 
Palladin ©   (2008-10-08 07:45) [4]

Через строки (String) будет работать, но не нужно пользоваться TextFile, и понимать разницу между бинарными данными и текстовыми


 
Slym ©   (2008-10-08 10:43) [5]

Некрофилы! ветке 7 месяцев :)


 
Palladin ©   (2008-10-08 10:47) [6]

мля... даже не посмотрел... это все он, некто Dian...


 
brother ©   (2008-10-08 10:50) [7]

> мля... даже не посмотрел... это все он, некто Dian...

вспомнилось: в 2 часа ночи... откуда? из морга! О_О



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
4-1231600539
Nucer
2009-01-10 18:15
2010.08.27
LSP (Layered Service Provider)


15-1263914019
TUser
2010-01-19 18:13
2010.08.27
СШ ГЭС: обледенение


2-1274384328
pro_xaoc
2010-05-20 23:38
2010.08.27
Ошибка с процедурой


15-1267567565
Delphi5.01
2010-03-03 01:06
2010.08.27
Редакт. настр. прокси для Firefox и Opera (решение оплачивается)


2-1265475416
Алексей2010
2010-02-06 19:56
2010.08.27
Не уничтожается класс с 0 индексом