zoukankan      html  css  js  c++  java
  • httpclient for windows demo

    httpclient for windows demo

    unit FMain;
    {
    uses
      Vcl.Forms,
      FMain in 'FMain.pas' {FormMain},
      Grijjy.Http in '....GrijjyFoundationGrijjy.Http.pas',
      Grijjy.SocketPool.Win in '....GrijjyFoundationGrijjy.SocketPool.Win.pas',
      Grijjy.OpenSSL.API in '....GrijjyFoundationGrijjy.OpenSSL.API.pas',
      Grijjy.OpenSSL in '....GrijjyFoundationGrijjy.OpenSSL.pas',
      Grijjy.MemoryPool in '....GrijjyFoundationGrijjy.MemoryPool.pas',
      Grijjy.Collections in '....GrijjyFoundationGrijjy.Collections.pas',
      Grijjy.Winsock2 in '....GrijjyFoundationGrijjy.Winsock2.pas',
      Grijjy.Uri in '....GrijjyFoundationGrijjy.Uri.pas',
      Grijjy.BinaryCoding in '....GrijjyFoundationGrijjy.BinaryCoding.pas',
      Nghttp2 in '..Nghttp2.pas';
    }
    
    interface
    
    uses
      Winapi.Windows,
      Winapi.Messages,
      System.SysUtils,
      System.Variants,
      System.Classes,
      System.Messaging,
      Vcl.Graphics,
      Vcl.Controls,
      Vcl.Forms,
      Vcl.Dialogs,
      Vcl.StdCtrls,
      Grijjy.Http;
    
    type
      TFormMain = class(TForm)
        EditUrl: TEdit;
        MemoContent: TMemo;
        MemoHeaders: TMemo;
        LabelResponseHeaders: TLabel;
        LabelResponseContent: TLabel;
        ButtonGet: TButton;
        ButtonGetNonBlocking: TButton;
        procedure ButtonGetClick(Sender: TObject);
        procedure ButtonGetNonBlockingClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        procedure HttpResponseMessageListener(const Sender: TObject;
          const M: TMessage);
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      FormMain: TFormMain;
    
    implementation
    
    {$R *.dfm}
    
    procedure TFormMain.ButtonGetClick(Sender: TObject);
    var
      HTTP: TgoHttpClient;
    begin
      HTTP := TgoHttpClient.Create;
      try
        MemoContent.Text := HTTP.Get(EditUrl.Text);
        MemoHeaders.Text := HTTP.ResponseHeaders.AsString;
      finally
        HTTP.Free;
      end;
    end;
    
    procedure TFormMain.ButtonGetNonBlockingClick(Sender: TObject);
    var
      HTTP: TgoHttpClient;
    begin
      HTTP := TgoHttpClient.Create(True, False);
      try
        HTTP.Get('https://nghttp2.org');
      finally
        HttpClientManager.Release(HTTP);
      end;
    end;
    
    procedure TFormMain.HttpResponseMessageListener(const Sender: TObject;
      const M: TMessage);
    var
      HttpResponseMessage: TgoHttpResponseMessage;
    begin
      HttpResponseMessage := M as TgoHttpResponseMessage;
      MemoContent.Text := HttpResponseMessage.HttpClient.BytesToString(HttpResponseMessage.Response, HttpResponseMessage.ResponseContentCharset);
      MemoHeaders.Text := HttpResponseMessage.ResponseHeaders.AsString;
    end;
    
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
      TMessageManager.DefaultManager.SubscribeToMessage(TgoHttpResponseMessage,
        HttpResponseMessageListener);
    end;
    
    procedure TFormMain.FormDestroy(Sender: TObject);
    begin
      TMessageManager.DefaultManager.Unsubscribe(TgoHttpResponseMessage,
        HttpResponseMessageListener);
    end;
    
    end.
    

      

  • 相关阅读:
    HorizontalScrollView水平滚动控件的使用
    ScrollView垂直滚动控件的使用
    RatingBar评分控件的使用
    ProgressBar进度条的使用
    AnalogClock和DigitalClock时间和日期控件
    DatePicker输入日期控件的使用
    ImageView从网络上获取图像
    CentOS 7.3 安装配置Samba服务器
    python元组内置函数
    Python元组
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/14275426.html
Copyright © 2011-2022 走看看