Does that mean curl is always waiting until the whole operation (download) is complete?
Is it possible to do it in a nonblocked way? For example with a continuous nonblocked loop call and a flag when the operation is finished? Am Dienstag, 28. September 2021, 02:01:00 CET schrieb Anthony Walter via fpc- pascal: > I was having some problems using vanilla sockets and OpenSSL to read a few > specific web pages using HTTPS. Normally I don't have any problems > using HTTPS, but with a few sites my code was not working. I ending up > finding the RTL unit LibCurl in one of the FPC packages and got it working > without too much trouble. LibCurl is a library allowing programmers to get > the functionality of the curl program without launching an external process. > > If anyone is interested, here is a small bit of code to GET a page over > HTTP or HTTPS using LibCurl. > > Interface: > > function CurlGet(const Url: string; out Data: string; UserAgent: string = > ''): Boolean; > > Implementation: > > uses > LibCurl; > > function WriteData(Ptr: PChar; MemberSize, MemberCount: UIntPtr; var Data: > string): UIntPtr; cdecl; > var > S: string; > begin > SetString(S, Ptr, MemberSize * MemberCount); > Data := Data + S; > Result := MemberSize * MemberCount; > end; > > function CurlGet(const Url: string; out Data: string; UserAgent: string = > ''): Boolean; > var > Curl: PCURL; > begin > Data := ''; > Result := False; > if Url = '' then > Exit; > Curl := curl_easy_init(); > if Curl = nil then > Exit; > try > curl_easy_setopt(curl, CURLOPT_URL, [PChar(Url)]); > if UserAgent <> '' then > curl_easy_setopt(curl, CURLOPT_USERAGENT, [PChar(UserAgent)]); > curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, [@WriteData]); > curl_easy_setopt(curl, CURLOPT_WRITEDATA, [@Data]); > curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, [0]); > curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, [0]); > Result := curl_easy_perform(curl) = CURLE_OK; > finally > curl_easy_cleanup(Curl); > end; > end; _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal