Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

TicketBAI -- Send HTTP POST

See more TicketBAI Examples

Demonstrates how to send a TicketBAI POST and get the response.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.StringBuilder,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  sbXml: TStringBuilder;
  json: TJsonObject;
  url: string;
  resp: THttpResponse;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  http := THttp.Create;

  success := http.SetSslClientCertPfx('your.pfx','pfx_password');
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  //  Get the XML we wish to send in the body of the request.
  sbXml := TStringBuilder.Create;
  success := sbXml.LoadFile('qa_data/payload.xml','utf-8');
  if (success = False) then
    begin
      WriteLn('Failed to load XML that is to be the HTTP request body');
      Exit;
    end;

  //  Build the following JSON

  //  { 
  //      "con": "LROE", 
  //      "apa": "1.1", 
  //      "inte": { 
  //          "nif": "número de identificación fiscal", 
  //          "nrs": "nombre o Razón social", 
  //          "ap1": "primer apellido", 
  //          "ap2": "segundo apellido" 
  //      }, 
  //      "drs": { 
  //      "mode": "140", 
  //      "ejer": "ejercicio" 
  //      } 
  //  }

  //  Use this online tool to generate code from sample JSON: 
  //  Generate Code to Create JSON

  json := TJsonObject.Create;
  json.UpdateString('con','LROE');
  json.UpdateString('apa','1.1');
  json.UpdateString('inte.nif','número de identificación fiscal');
  json.UpdateString('inte.nrs','nombre o Razón social');
  json.UpdateString('inte.ap1','primer apellido');
  json.UpdateString('inte.ap2','segundo apellido');
  json.UpdateString('drs.mode','140');
  json.UpdateString('drs.ejer','ejercicio');

  //  Add required headers...
  http.SetRequestHeader('eus-bizkaia-n3-version','1.0');
  http.SetRequestHeader('eus-bizkaia-n3-content-type','application/xml');
  http.SetRequestHeader('eus-bizkaia-n3-data',json.Emit());

  url := 'https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena';
  resp := THttpResponse.Create;
  http.UncommonOptions := 'SendGzipped';
  success := http.HttpSb('POST',url,sbXml,'utf-8','application/octet-stream',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  http.ClearHeaders();

  WriteLn('response status code: ' + resp.StatusCode);

  //  Examine the response (it is already decompressed)
  WriteLn('response body:');
  WriteLn(resp.BodyStr);


  http.Free;
  sbXml.Free;
  json.Free;
  resp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.