fpHttpClientMethods topic
HTTP Methods with TFPHTTPClient
Declaration
fpHttpClientMethodsDescription
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.
