[Previous][Up][Next] Reference for unit 'fpHTTPClient' (#fcl)

HTTP Methods with TFPHTTPClient

The TFPHTTPClient class supports all standard HTTP methods through various methods and overloads. Each method provides multiple ways to handle the response: as a string, stream, or file.

program HTTPMethodsExample;

{$mode objfpc}{$H+}

uses
  SysUtils, Classes, fphttpclient, opensslsockets;

var
  Client: TFPHTTPClient;
  Response: String;
  PostData: TStringStream;
  ResponseStream: TFileStream;
begin
  Client := TFPHTTPClient.Create(nil);
  try
    // GET request
    Writeln('=== GET Request ===');
    Response := Client.Get('https://httpbin.org/get?param1=value1');
    Writeln('GET Response: ', Copy(Response, 1, 100), '...');

    // POST request with data
    Writeln('=== POST Request ===');
    Client.RequestBody := TRawByteStringStream.Create('{"key": "value", "number": 42}');
    Client.AddHeader('Content-Type', 'application/json');
    Response := Client.Post('https://httpbin.org/post');
    Writeln('POST Response: ', Copy(Response, 1, 100), '...');

    // PUT request
    Writeln('=== PUT Request ===');
    Client.RequestBody := TRawByteStringStream.Create('{"updated": "data"}');
    Client.AddHeader('Content-Type', 'application/json');
    Client.HTTPMethod('PUT', 'https://httpbin.org/put', nil, [200]);
    Writeln('PUT Status Code: ', Client.ResponseStatusCode);

    // DELETE request
    Writeln('=== DELETE Request ===');
    Client.HTTPMethod('DELETE', 'https://httpbin.org/delete', nil, [200]);
    Writeln('DELETE Status Code: ', Client.ResponseStatusCode);

    // HEAD request (only headers, no body)
    Writeln('=== HEAD Request ===');
    Client.HTTPMethod('HEAD', 'https://httpbin.org/get', nil, [200]);
    Writeln('HEAD Content-Length: ', Client.GetHeader(Client.ResponseHeaders, 'Content-Length'));

    // OPTIONS request
    Writeln('=== OPTIONS Request ===');
    Client.HTTPMethod('OPTIONS', 'https://httpbin.org', nil, [200]);
    Writeln('Allowed Methods: ', Client.GetHeader(Client.ResponseHeaders, 'Allow'));

    // Save response to file
    Writeln('=== GET to File ===');
    Client.Get('https://httpbin.org/json', '/tmp/claude/response.json');
    if FileExists('/tmp/claude/response.json') then
      Writeln('Response saved to file successfully');

  finally
    Client.Free;
  end;
end.

Documentation generated on: Jan 27 2026