Конференция "Сети" » WinAPI + скачивание файла по http (просто)
 
  • Dima (13.03.08 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 © (14.03.08 04:25) [1]
    все работает... ты не отрезаешь заголовок у ответа аля 'HTTP/1.1 200 OK' и т.д.
  • Slym © (14.03.08 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 (08.10.08 03:27) [3]
    Через строки будет работать только с текстовыми файлами
  • Palladin © (08.10.08 07:45) [4]
    Через строки (String) будет работать, но не нужно пользоваться TextFile, и понимать разницу между бинарными данными и текстовыми
  • Slym © (08.10.08 10:43) [5]
    Некрофилы! ветке 7 месяцев :)
  • Palladin © (08.10.08 10:47) [6]
    мля... даже не посмотрел... это все он, некто Dian...
  • brother © (08.10.08 10:50) [7]
    > мля... даже не посмотрел... это все он, некто Dian...

    вспомнилось: в 2 часа ночи... откуда? из морга! О_О
 
Конференция "Сети" » WinAPI + скачивание файла по http (просто)
Есть новые Нет новых   [134432   +19][b:0][p:0.002]