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

HTTP GET with Non-USASCII Query Params

See more HTTP Examples

This example illustrates how query parameters in a URL are typically encoded and transmitted.

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;

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

procedure RunDemo;
var
  success: Boolean;
  sbCompanyName: TStringBuilder;
  sbUrl: TStringBuilder;
  http: THttp;
  sbResponse: TStringBuilder;

begin
  success := False;

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

  //  First, let's load the string "Grünhöfer GmbH" from a file.  (This is a fictitious company name.)
  //  The file uses the utf-8 charset encoding.
  sbCompanyName := TStringBuilder.Create;
  success := sbCompanyName.LoadFile('qa_data/txt/companyName.txt','utf-8');
  //  Assuming success for this example...

  //  We'll send an HTTP GET request to https://chilkatsoft.com/example?company_name={company name}

  //  When sending an HTTP GET request with query parameters that contain accented characters 
  //  (e.g., umlauts: ä, ö, ü), they must be percent-encoded (URL encoded) to ensure proper transmission and 
  //  interpretation by the server.  This is based on their UTF-8 byte values.
  sbUrl := TStringBuilder.Create;
  sbUrl.Append('https://chilkatsoft.com/example?company_name=');
  sbUrl.Append(sbCompanyName.GetEncoded('url','utf-8'));

  http := THttp.Create;

  //  Send the following HTTP GET request:

  //  GET /example?company_name=Gr%C3%BCnh%C3%B6fer%20GmbH HTTP/1.1
  //  Host: chilkatsoft.com
  //  Accept: */*
  //  Accept-Encoding: gzip

  sbResponse := TStringBuilder.Create;
  success := http.QuickGetSb(sbUrl.GetAsString(),sbResponse);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn('response status code: ' + http.LastStatus);
  WriteLn(sbResponse.GetAsString());


  sbCompanyName.Free;
  sbUrl.Free;
  http.Free;
  sbResponse.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.