delphi nethttpclient操作cookie

delphi nethttpclient操作cookie

复制代码
uses System.Net.HttpClientComponent,System.Net.HttpClient,

//取 cookei ///
  for var TCooki in nethttp.CookieManager.Cookies do  //    nethttp: TNetHTTPClient;
  begin

    if str_str(uip, StrRight(TCooki.Domain, Length(TCooki.Domain) - 1)) then
      edit1.Text := TCooki.Value;
     //memo1.Lines.Add(TCooki.Path + ' | ' + TCooki.Domain + ' | ' + TCooki.Name + ' | ' + TCooki.Value);
  end;
   

//添加cookie 
  var a := TURI.Create('http://xxxxxx/main.action');
  a.path := '/';
  var cookie := System.Net.HttpClient.tcookie.Create('JSESSIONID=' + Edit1.text + ';', aaaa); // 'JSESSIONID=A17E7980BA97270045B829D8CC0EF060;'
  nhttp := TNetHTTPClient.Create(nil);
  nhttp.CookieManager.Clear;  //清除cookie 
  nhttp.CookieManager.AddServerCookie(cookie, a);




//最简单取得cookie后 克隆控件属性
   myHttp.Assign(nHttp);   //直接克隆属性  myHttp 复制 nHttp  ,释放nHttp不会影响myHttp
   
复制代码

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Net.URLClient,
  System.Net.HttpClient, System.Net.HttpClientComponent;
 
type
  TForm1 = class(TForm)
    NetHTTPClient1: TNetHTTPClient;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var
  cookie: TCookie;
begin
  for cookie in NetHTTPClient1.CookieManager.Cookies do
  begin if (cookie.Domain = 'www.server.com') and (cookie.Name = 'test') then
  begin
  //
  end;
  end;
end;
 
end.

  TCookie:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/// <summary>Cookie record.</summary>
TCookie = record
private
  class function StrExpiresToDateTime(const AStrDate: string): TDateTime; static;
public
  /// <summary>Cookie Name</summary>
  Name: string;
  /// <summary>Cookie Value</summary>
  Value: string;
  /// <summary>Cookie Expires. It's the date when the cookie will expire</summary>
  /// <remarks>When Expires is 0 means a session cookie.</remarks>
  Expires: TDateTime;
  /// <summary>Cookie Domain</summary>
  Domain: string;
  /// <summary>Cookie Path</summary>
  Path: string;
  /// <summary>Cookie Secure</summary>
  /// <remarks>If True then the cookie will be sent if https scheme is used</remarks>
  Secure: Boolean;
  /// <summary>Cookie HttpOnly</summary>
  /// <remarks>If True then the cookie will not be used in javascript, it's browser dependant.</remarks>
  HttpOnly: Boolean;
 
  /// <summary>Return the cookie as string to be send to the server</summary>
  function ToString: string;
  /// <summary>Return a TCookie parsing ACookieData based on the URI param</summary>
  class function Create(const ACookieData: string; const AURI: TURI): TCookie; static;
end;

  

posted @   delphi中间件  阅读(2455)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示