[DELPHI]WsHTTP - Компонент для работы с HTTP

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fenixelite, 3 Aug 2010.

  1. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Лучще этот компонент перепиши.

    Не советовал бы им пользоваться, объясняю почему :
    Скомпилировать не смог, т.к. нету в D7 WinSock2 по дефолту(хотя бы с архивом бы кинул). Дальше лучше. На первый взгляд - одни утечки памяти : при пересоздании компонента - каждый раз будет возрастать память.
    Вот эту функцию я видел ещё у RedFern89(собсна ты сам и писал что его наработки использовал, и кстати зря) :
    Code:
    function TMultiPartFormData.GetFileContent(const AFileName : string): AnsiString;
    Функция грузит в память ВЕСЬ файл, причем в строку, соответсвенно файл надо читать кусками и тут же отправлять и наче так нельзя носиловать менеджер памяти.
    Вот очень эпичный конструктор(багов не прибавит, но выглядит как то нездраво) :
    Code:
    constructor TMultiPartFormData.Create;
    begin
    
    end;
    Вот тоже интересно :
    Code:
    function TWsHTTP.GetHost(const AURL: string): string;
    var
      temp : string;
    begin
      temp := AURL;
      //if Pos('www.', temp) <> 0 then Delete(temp, Pos('w', temp), 4);
      if Pos('://', temp) <> 0 then Delete(temp, 1, 7);
      if Pos('/', temp) <> 0 then Delete(temp, Pos('/', temp), Length(temp));
      Result := temp;
    end;
    Схемы не учитываются, функция достаточно бредова(держи http://lib.ru/WEBMASTER/rfc2068/rfc2068rus.txt)
    Так редиректы не обрабатываются :
    Code:
      If PAutoRedirect then
        begin
          url := Result;
          if (Pos(#13#10+'Location', url) <> 0) then
            begin
              Inc(current_redirect);
              url := Redirect(Result, host);
              dec(current_redirect);
            end;
          Result := url;
        end;
    Обрабатываться должны по коду. Работать конечно будет как надо, но коды были придуманы не просто так и редиректы бывают разные.
    Кукименеджер не поддержвивает удаление устаревших печенек, не следит за размером, числом(конечно глупость, но если уж делать...) Вот http://lib.ru/WEBMASTER/cookie_spec.txt
    И на последок - функции GET, POST нужно тоже переписать, т.к. в них код почти одинаков(попахивает индусом), сделать нужно универсальную функцию(такая как бы есть SendRequest, но проверку результат нужно тоже туда добавить).
    Это только на первый взгляд. Вывод, читать и переписывать, я места указал, про утечки памяти думаю сам догодаешься.
     
  2. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    575
    Likes Received:
    48
    Reputations:
    0
    пипеец))) ты мой угребищный модуль переписал чтоль?)) ууужс!!!1!1!1!
     
  3. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Спасибо за развернутый ответ. Конечно, я и сам знаю, что он очень-очень далек до идеала. Буду переписывать, исправлять и т.д.
    Да и знаний пока не так уж и много( учитель - только инет + книги ).
     
    1 person likes this.
  4. pragmak

    pragmak New Member

    Joined:
    2 Oct 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Перезалейте компонент :(
     
    #24 pragmak, 4 Oct 2010
    Last edited: 12 Oct 2010