Sign in Join
FPDoc Onlineexperiment

fpHttpClientMethods topic

In unit fpHTTPClient

HTTP Methods with TFPHTTPClient

Declaration

pascal
fpHttpClientMethods

Description

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.

An experiment, built from development snapshots. Not the official Free Pascal or Lazarus documentation.