mainunit.cpp

来自「著名的SecureBlackBox控件完整源码」· C++ 代码 · 共 168 行

CPP
168
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SBHTTPSClient"
#pragma link "SBSimpleSSL"
#pragma resource "*.dfm"
TFrmMain *FrmMain;
//---------------------------------------------------------------------------
__fastcall TFrmMain::TFrmMain(TComponent* Owner)
        : TForm(Owner)
{
	SetLicenseKey((AnsiString)"ADDCD14AD06709806817E0B3D7BFD0A2222D536FE156466C5D5FE65DB5DEAE76" +
	  "FFDEBC07E915A5751C12C01C783958872A38E4A5EDA140E7247E0F2E56442A3C" +
	  "F3E9347AD8FDE52083A0DFC86BC00ECB0FD0CF1B51159A2BCB84F6EA6349EF47" +
	  "5C15A59AFCC55F7C3AAD26C279628B5D91B1DC94BD2385354A70CCA3B76101D9" +
	  "F41C84A639FC3CCE4BA8F0CC4A66DCD150114A3F58C1AD46B7B94643741BC20A" +
	  "8DCA83AB921480951B423CAA19EF1863A47CA2C3422E7E5634BED98939A5AE43" +
	  "DE1E4BAD79E66D8A5C973B3455656C8C9B6FF024FADD6CDA02D0F506D98493C8" +
      "BD1ED7B237DB75FA31F2C82654490CDDDEE24E19939137B9E1DB05508733B22F");
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::btnGoClick(TObject *Sender)
{
    TStream* Stream;

    MMLog->Lines->Clear();
    if (EdPath->Text == "")
        EdPath->Text = "/";
    //metacode - update HttpClient
    HttpsClient->SSLEnabled = CbProtocol->ItemIndex > 0;
    HttpsClient->UseHTTPProxy = false;
    //metacode - disable 'Go' button
    btnGo->Enabled = false;
    //metacode - fetch the page
    Stream = new TFileStream("output.html", fmCreate);
    try
    {
        HttpsClient->OutputStream = Stream;
        HttpsClient->Get(CbProtocol->Text + "://" + EdHost->Text + ":" + EdPort->Text + EdPath->Text);
    }
    __finally
    {
        delete Stream;
        btnGo->Enabled = true;
    }
}
//---------------------------------------------------------------------------
/*
procedure TFrmMain.HttpsClientConnect(Sender: TObject);
begin
  MMLog.Lines.Add('--Log-- Connected --Log--');
  Application.ProcessMessages;
  //AssignFile(FLogFile, 'HTTPSClient.log'); Rewrite(FLogFile);
end;

procedure TFrmMain.HttpsClientDisconnect(Sender: TObject);
begin
  MMLog.Lines.Add('--Log-- Disconnected --Log--');
  Application.ProcessMessages;
//  CloseFile(FLogFile);
end;

procedure TFrmMain.HttpsClientReceive(Sender: TObject; Buffer: Pointer;
  Size: Integer);
var TmpS: String;
begin
  SetString(TmpS, PChar(Buffer), Size);
  //write(FLogFile, TmpS);
  MMLog.Text := MMLog.Text + TmpS;
  Application.ProcessMessages;
end;

procedure TFrmMain.HttpsClientSend(Sender: TObject);
begin
  ;
end;
*/
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientCertificateValidate(TObject *Sender,
      TElX509Certificate *X509Certificate, bool &Validate)
{
    Validate = true;
    // NEVER do this in real life since this makes security void.
    // Instead validate the certificate as described on http://www.eldos.com/sbb/articles/1966.php
}
//---------------------------------------------------------------------------
/*
procedure TFrmMain.HttpsClientCertificateNeeded(Sender: TObject;
  PCertificate: Pointer; var CertificateSize: Integer;
  PPrivateKey: Pointer; var PrivateKeySize: Integer;
  CertificateType: TClientCertificateType);
begin
  ;
end;
*/
//---------------------------------------------------------------------------
void __fastcall TFrmMain::CbProtocolChange(TObject *Sender)
{
    ;
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::FormCreate(TObject *Sender)
{
    CbProtocol->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientDocumentStart(TObject *Sender)
{
    MMLog->Lines->Add("--- Document started ---");
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientDocumentFinish(TObject *Sender)
{
    MMLog->Lines->Add("--- Document finished ---");
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientData(TObject *Sender, Pointer Buffer,
      int Size)
{
    AnsiString S = AnsiString((char*)Buffer);

//    SetLength(S, Size);
//    Move(Buffer^, S[1], Size);
    MMLog->Text = MMLog->Text + S;
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientReceivingHeaders(TObject *Sender,
      TStringList *Headers)
{
    MMLog->Lines->Add("Headers received: ");
    MMLog->Lines->AddStrings(Headers);
    MMLog->Lines->Add("");
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientCloseConnection(TObject *Sender,
      TSBCloseReason CloseReason)
{
    MMLog->Lines->Add("Connection closed.");
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientRedirection(TObject *Sender,
      AnsiString OldURL, AnsiString NewURL, bool &AllowRedirection)
{
    AllowRedirection = false;
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::HttpsClientPreparedHeaders(TObject *Sender,
      TStringList *Headers)
{
    MMLog->Lines->Add("Headers sent: ");
    MMLog->Lines->AddStrings(Headers);
    MMLog->Lines->Add("");
    Application->ProcessMessages();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?