mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-06 14:18:24 +02:00
55 lines
1.6 KiB
ObjectPascal
55 lines
1.6 KiB
ObjectPascal
{
|
|
$Id: header,v 1.1 2000/07/13 06:33:45 michael Exp $
|
|
This file is part of the Free Component Library (FCL)
|
|
Copyright (c) 1999-2000 by the Free Pascal development team
|
|
|
|
See the file COPYING.FPC, included in this distribution,
|
|
for details about the copyright.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
**********************************************************************}
|
|
{
|
|
This example shows how to use curl and write the result to a TStream.
|
|
It requires the libcurl library. Should work on Unix/Linux.
|
|
It would need modifications to run on Windows.
|
|
}
|
|
|
|
{$mode objfpc}
|
|
{$H+}
|
|
program teststream;
|
|
|
|
uses classes,libcurl,{$ifdef windows}ctypes{$else}unixtype{$endif};
|
|
|
|
Function DoWrite(Ptr : Pointer; Size : size_t; nmemb: size_t; Data : Pointer) : size_t;cdecl;
|
|
|
|
begin
|
|
Result:=TStream(Data).Write(Ptr^,Size*nmemb);
|
|
end;
|
|
|
|
Var
|
|
f : TFileStream;
|
|
URL : PAnsiChar = 'http://www.freepascal.org';
|
|
hCurl : pCurl;
|
|
|
|
begin
|
|
F:=TFileStream.Create('fpc.html',fmCreate);
|
|
Try
|
|
hCurl:= curl_easy_init;
|
|
if Assigned(hCurl) then
|
|
begin
|
|
curl_easy_setopt(hCurl,CURLOPT_VERBOSE, [True]);
|
|
curl_easy_setopt(hCurl,CURLOPT_URL,[URL]);
|
|
curl_easy_setopt(hCurl,CURLOPT_WRITEFUNCTION,[@DoWrite]);
|
|
curl_easy_setopt(hCurl,CURLOPT_WRITEDATA,[Pointer(F)]);
|
|
if curl_easy_perform(hCurl)<>CURLE_OK then
|
|
Writeln(StdErr,'Failed to get URL');
|
|
curl_easy_cleanup(hCurl);
|
|
end;
|
|
Finally
|
|
F.Free;
|
|
end;
|
|
end.
|