Am Sonntag, 5. Dezember 2021, 20:38:30 CET schrieb Rainer Stratmann via fpc- pascal: > 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? >
Found it already. It seems that a nonblocking operation mode is possible! https://everything.curl.dev/libcurl/drive https://everything.curl.dev/libcurl/drive/multi > > 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 _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal