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 + -
显示快捷键?