亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? alhttpcommon.pas

?? Description: common http function that can be use by HTTP Component
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
    property Warning: String read FWarning; {Warning: 112 Disconnected Operation}
    property WWWAuthenticate: String read FWWWAuthenticate; {WWW-Authenticate: [challenge]}
    Property CustomHeaders: Tstrings read FCustomHeaders;
    property Cookies: TStrings read FCookies;
    property StatusCode: String read FStatusCode;
    property HttpProtocolVersion: String read FHttpProtocolVersion;
    Property ReasonPhrase: String read FReasonPhrase;
    property RawHeaderText: String read GetRawHeaderText write setRawHeaderText;
  end;

{Http Function}
function  ALHTTPDecode(const AStr: String): string;
function  ALHTTPEncodeParam(const AStr: String): string;
procedure ALHTTPEncodeParamNameValues(ParamValues: TStrings);
procedure ALExtractHTTPFields(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings; StripQuotes: Boolean = False);
Function  AlExtractShemeFromUrl(aUrl: String): TInternetScheme;
Function  AlExtractHostNameFromUrl(aUrl: String): String;
Function  AlRemoveAnchorFromUrl(aUrl: String; Var aAnchor: String): String; overload;
Function  AlRemoveAnchorFromUrl(aUrl: String): String; overload;
function  AlCombineUrl(RelativeUrl, BaseUrl: String): String;


ResourceString
  CALHTTPCLient_MsgInvalidURL         = 'Invalid url ''%s'' - only supports ''http'' and ''https'' schemes';
  CALHTTPCLient_MsgInvalidHTTPRequest = 'Invalid HTTP Request: Length is 0';
  CALHTTPCLient_MsgEmptyURL           = 'Empty URL';

implementation

uses HTTPapp,
     alFcnRFC,
     AlFcnString;

{***********************************************************************}
function AlStringFetch(var AInput: string; const ADelim: string): string;
var
  LPos: Integer;
begin
  LPos := AlPos(ADelim, AInput);
  if LPos = 0 then begin
    Result := AInput;
    AInput := '';
  end
  else begin
    Result := AlCopyStr(AInput, 1, LPos - 1);
    AInput := AlCopyStr(AInput, LPos + Length(ADelim), MaxInt);
  end;
end;


/////////////////////////////////////////////////////////////////////////////
////////// TALHTTPRequestCookie /////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////

{***************************************************************}
constructor TALHTTPRequestCookie.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FExpires := -1;
  FSecure := False;
end;

{*********************************************************}
procedure TALHTTPRequestCookie.AssignTo(Dest: TPersistent);
begin
  if Dest is TALHTTPRequestCookie then
    with TALHTTPRequestCookie(Dest) do begin
      Name := Self.FName;
      Value := Self.FValue;
      Domain := Self.FDomain;
      Path := Self.FPath;
      Expires := Self.FExpires;
      Secure := Self.FSecure;
    end
    else inherited AssignTo(Dest);
end;

{***************************************************}
function TALHTTPRequestCookie.GetHeaderValue: string;
var aYear, aMonth, aDay: Word;
begin
  Result := Format('%s=%s; ', [ALHTTPEncodeParam(FName), ALHTTPEncodeParam(FValue)]);
  if Domain <> '' then Result := Result + Format('domain=%s; ', [Domain]);
  if Path <> '' then Result := Result + Format('path=%s; ', [Path]);
  if Expires > -1 then begin
    DecodeDate(Expires, aYear, aMonth, aDay);
    Result := Result + Format(
                              FormatDateTime(
                                             '"expires=%s, "dd"-%s-"yyyy" "hh":"nn":"ss" GMT; "',
                                             Expires
                                            ),
                              [
                               CAlRfc822DaysOfWeek[DayOfWeek(Expires)],
                               CAlRfc822MonthNames[aMonth]
                              ]
                             );
  end;
  if Secure then Result := Result + 'secure';
  if Copy(Result, Length(Result) - 1, MaxInt) = '; ' then SetLength(Result, Length(Result) - 2);
end;

{******************************************************************}
procedure TALHTTPRequestCookie.SetHeaderValue(Const aValue: string);
Var aCookieProp: TStringList;
    aCookieStr: String;
begin
  FName:= '';
  FValue:= '';
  FPath:= '';
  FDomain:= '';
  FExpires:= -1;
  FSecure:= False;

  aCookieProp := TStringList.Create;
  try
    aCookieStr := AValue;

    while Pos(';', aCookieStr) > 0 do begin
      aCookieProp.Add(Trim(AlStringFetch(aCookieStr, ';')));
      if (Pos(';', aCookieStr) = 0) and (Length(aCookieStr) > 0) then aCookieProp.Add(Trim(aCookieStr));
    end;

    if aCookieProp.Count = 0 then aCookieProp.Text := aCookieStr;
    if aCookieProp.Count = 0 then exit;

    FName := aCookieProp.Names[0];
    FValue := aCookieProp.Values[aCookieProp.Names[0]];
    aCookieProp.Delete(0);

    FPath := aCookieProp.values['PATH'];
    { Tomcat can return SetCookie2 with path wrapped in " }
    if (Length(FPath) > 0) then begin
      if FPath[1] = '"' then Delete(FPath, 1, 1);
      if FPath[Length(FPath)] = '"' then SetLength(FPath, Length(FPath) - 1);
    end
    else FPath := '/';
    if not ALTryRfc822StrToGmtDateTime(aCookieProp.values['EXPIRES'], FExpires) then FExpires := -1;
    FDomain := aCookieProp.values['DOMAIN'];
    FSecure := aCookieProp.IndexOf('SECURE') <> -1;
  finally
    aCookieProp.free;
  end;
end;



/////////////////////////////////////////////////////////////////////////////
////////// TCookieCollection ////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////

{****************************************************************}
function TALHTTPRequestCookieCollection.Add: TALHTTPRequestCookie;
begin
  Result := TALHTTPRequestCookie(inherited Add);
end;

{**************************************************************************************}
function TALHTTPRequestCookieCollection.GetCookie(Index: Integer): TALHTTPRequestCookie;
begin
  Result := TALHTTPRequestCookie(inherited Items[Index]);
end;

{***********************************************************************************************}
procedure TALHTTPRequestCookieCollection.SetCookie(Index: Integer; Cookie: TALHTTPRequestCookie);
begin
  Items[Index].Assign(Cookie);
end;




///////////////////////////////////////////////////////////////////////////////////////
////////// TALHTTPClientResponseHeader ////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////

{***************************************}
constructor TALHTTPResponseHeader.Create;
begin
  inherited;
  FCustomHeaders := TstringList.create;
  FCustomHeaders.Delimiter := ':';
  FCookies := TstringList.create;
  clear;
end;

{***************************************}
destructor TALHTTPResponseHeader.Destroy;
begin
  FCustomHeaders.free;
  FCookies.free;
  inherited;
end;

{************************************}
procedure TALHTTPResponseHeader.Clear;
begin
  FAcceptRanges:= '';
  FAge:= '';
  FAllow:= '';
  FCacheControl:= '';
  FConnection:= '';
  FContentEncoding:= '';
  FContentLanguage:= '';
  FContentLength:= '';
  FContentLocation:= '';
  FContentMD5:= '';
  FContentRange:= '';
  FContentType:= '';
  FDate:= '';
  FETag:= '';
  FExpires:= '';
  FLastModified:= '';
  FLocation:= '';
  FPragma:= '';
  FProxyAuthenticate:= '';
  FRetryAfter:= '';
  FServer:= '';
  FTrailer:= '';
  FTransferEncoding:= '';
  FUpgrade:= '';
  FVary:= '';
  FVia:= '';
  FWarning:= '';
  FWWWAuthenticate:= '';
  FRawHeaderText:= '';
  FCustomHeaders.clear;
  FCookies.Clear;
  FStatusCode:= '';
  FHttpProtocolVersion:= '';
  FReasonPhrase := '';
end;

{******************************************************}
function TALHTTPResponseHeader.GetRawHeaderText: String;
begin
  result := FRawHeaderText;
end;

{*****************************************************************************}
procedure TALHTTPResponseHeader.SetRawHeaderText(Const aRawHeaderText: string);
Var aRawHeaderLst: TstringList;
    j: integer;
    AStatusLine: String;

  {-------------------------------------}
  Function AlG001(aName: String): String;
  Var i: Integer;
  bFound: boolean;
  index: integer;
  Begin
    result := '';
    bFound:= false;
    for i:= 0 to aRawHeaderLst.Count - 1 do
    begin
      index := pos(aname, aRawHeaderLst[i]);
      if index = 1 then
      begin
        bFound := true;
        break;
      end;
    end;

    if bFound then
    begin
      result := copy(aRawHeaderLst[i], index + Length(aName) + 1, Length(aRawHeaderLst[i]));
      result := trim(result);
      aRawHeaderLst.Delete(i);
    end;
    {
    I := aRawHeaderLst.IndexOfName(aName);
    If I >= 0 then Begin
      result := Trim(aRawHeaderLst.Values[aName]);
      aRawHeaderLst.Delete(i);
    end
    else result := '';
    }
  end;

begin
  aRawHeaderLst := TstringList.create;
  try
    aRawHeaderLst.Delimiter := ':';
    aRawHeaderLst.Text := aRawHeaderText;

    FAcceptRanges := Alg001('Accept-Ranges');
    FAge:= Alg001('Age');
    FAllow := Alg001('Allow');
    FCacheControl := Alg001('Cache-Control');
    FConnection := Alg001('Connection');
    FContentEncoding := Alg001('Content-Encoding');
    FContentLanguage := Alg001('Content-Language');
    FContentLength := Alg001('Content-Length');
    FContentLocation := Alg001('Content-Location');
    FContentMD5 := Alg001('Content-MD5');
    FContentRange := Alg001('Content-Range');

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品av麻豆的观看方式| 91日韩在线专区| 一区二区在线看| 一区二区中文字幕在线| 国产日韩欧美激情| 中文字幕中文字幕一区| 国产欧美日韩卡一| 国产精品网曝门| 中文字幕亚洲一区二区va在线| 国产精品美日韩| 亚洲欧洲国产日本综合| 亚洲黄网站在线观看| 亚洲国产精品精华液网站| 午夜精品一区二区三区免费视频 | 日韩二区三区四区| 日韩精品每日更新| 精品一区二区三区视频| 国产精品系列在线播放| 成人av动漫网站| 欧洲另类一二三四区| 欧美一区二区三区视频在线观看| 日韩欧美激情四射| 国产精品电影院| 亚洲国产精品久久不卡毛片| 蜜臀av一区二区在线观看| 国产乱码精品一区二区三区五月婷 | 97久久精品人人做人人爽| 在线观看网站黄不卡| 日韩精品一区二区在线| 国产精品久久午夜夜伦鲁鲁| 亚洲一区免费在线观看| 精品亚洲porn| 91久久精品网| 26uuu国产在线精品一区二区| 中文久久乱码一区二区| 视频在线观看一区二区三区| 国产乱淫av一区二区三区| 在线视频国内一区二区| 久久先锋影音av鲁色资源| 亚洲一区在线视频| 成人亚洲一区二区一| 日韩一本二本av| ...av二区三区久久精品| 美美哒免费高清在线观看视频一区二区 | 久久国产三级精品| 在线观看精品一区| 亚洲欧洲av一区二区三区久久| 日韩成人dvd| 欧美在线看片a免费观看| 久久久国产精品麻豆| 天天操天天综合网| 99久久久精品免费观看国产蜜| 久久亚洲一区二区三区明星换脸 | 理论电影国产精品| 欧美丝袜自拍制服另类| 中文字幕成人av| 国产裸体歌舞团一区二区| 在线播放91灌醉迷j高跟美女| 中文字幕中文乱码欧美一区二区 | 另类小说色综合网站| 欧洲日韩一区二区三区| 亚洲人成伊人成综合网小说| 国产精品一线二线三线精华| 精品国产伦一区二区三区观看方式 | 国产成人在线电影| 精品国产乱码久久久久久老虎| 日韩电影免费在线| 欧美日高清视频| 亚洲国产中文字幕| 欧美日韩成人一区| 亚洲成av人片一区二区| 欧美私模裸体表演在线观看| 一区二区三区免费在线观看| 一本到三区不卡视频| 一区二区三区在线免费视频| 色综合网站在线| 91天堂素人约啪| 欧美激情在线一区二区三区| 国产精品中文字幕一区二区三区| 欧美成人精品1314www| 日韩激情视频网站| 日韩欧美一级二级三级| 人人狠狠综合久久亚洲| 欧美成人精品高清在线播放| 狠狠色丁香久久婷婷综| 久久这里只精品最新地址| 国产一区二区在线影院| 国产精品毛片无遮挡高清| 亚洲一区二区三区中文字幕| 日本乱人伦aⅴ精品| 国产精品久久久久毛片软件| www.亚洲色图.com| 一区二区三区在线高清| 欧美久久免费观看| 老司机精品视频一区二区三区| 日韩美女视频一区二区在线观看| 国产一区二区视频在线播放| 亚洲国产高清aⅴ视频| 色成人在线视频| 日本欧美肥老太交大片| 久久久不卡影院| 99视频热这里只有精品免费| 亚洲永久免费av| 日韩一区二区三区观看| 国产成人午夜精品影院观看视频 | 亚洲国产欧美在线| 成人免费视频视频| 中文字幕一区二区三区在线观看| 国产成a人亚洲精品| 国产精品久久久久久久岛一牛影视| 99精品视频一区二区三区| 亚洲国产婷婷综合在线精品| 欧美不卡123| 99久久99久久免费精品蜜臀| 日韩有码一区二区三区| 国产精品久久久99| 日韩一区二区三区在线观看| 91亚洲永久精品| 老司机精品视频导航| 一区二区三区四区不卡在线 | 综合色中文字幕| 欧美一区二区三区白人| 91美女在线视频| 精品在线观看免费| 亚洲一区二区影院| 欧美xxxxxxxxx| 91丝袜高跟美女视频| 麻豆视频观看网址久久| 亚洲乱码日产精品bd| 欧美成人精品3d动漫h| 欧美在线免费观看亚洲| 国产成人综合自拍| 奇米888四色在线精品| 亚洲精品视频一区| 中文字幕不卡在线观看| 精品对白一区国产伦| 91精品国产高清一区二区三区蜜臀 | 亚洲综合在线视频| 国产精品美女久久久久av爽李琼| 欧美精品色综合| 欧美性色黄大片| 色综合天天在线| av成人动漫在线观看| 成人综合日日夜夜| 免费在线成人网| 一区二区三区精品在线| 国产精品理论在线观看| 国产亚洲综合av| 久久蜜桃av一区二区天堂 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 性久久久久久久久久久久| 亚洲欧美视频在线观看| 亚洲码国产岛国毛片在线| 国产精品麻豆久久久| 亚洲欧洲一区二区三区| 亚洲日本一区二区| 亚洲激情第一区| 亚洲一区二区三区精品在线| 亚洲午夜在线电影| 日韩不卡在线观看日韩不卡视频| 蜜桃av噜噜一区二区三区小说| 在线成人av影院| 欧美日韩精品一区二区三区| 欧美日韩亚洲综合一区二区三区| 欧美日韩视频在线一区二区| 欧美在线免费视屏| 91精品国产综合久久精品性色| 日韩午夜精品电影| 久久久高清一区二区三区| 国产精品天干天干在观线| 亚洲免费在线观看| 午夜精品久久久久久久| 麻豆精品一二三| 成人性生交大合| 色噜噜狠狠色综合中国| 欧美精品一卡二卡| 久久久五月婷婷| 一区二区三区视频在线观看| 日韩国产欧美一区二区三区| 精品一区二区在线视频| 成人va在线观看| 欧美精品少妇一区二区三区| 国产a区久久久| 99re热这里只有精品免费视频| 欧美唯美清纯偷拍| 久久青草欧美一区二区三区| 亚洲欧洲日韩在线| 奇米亚洲午夜久久精品| 成人a区在线观看| 69堂国产成人免费视频| 国产精品入口麻豆九色| 蜜臀av一区二区在线免费观看| 成人免费观看av| 日韩欧美一区在线观看| 中文字幕亚洲区| 激情五月激情综合网| 欧美性色欧美a在线播放| 国产精品午夜久久| 麻豆91在线观看| 欧美视频一区二区三区在线观看|