Fórumok
Keresek olyan HTTP library-t, ami egyszerre fordul Windows-ra és Linux-ra, esetleg Mac OS X-re is. Lazarus-t használok, a legfrissebb stable-t, 1.2.6 (FPC: 2.6.4). Kissé elakadtam és úgy tűnik, hogy a (szerintem) igencsak szimpla elvárásaimnak mintha egyik se felelne meg (vagy lehet, csak az esetenként hiányos / nem létező doksik miatt látom így).
Elvárások:
- Képes legyen natívan HTTPS-t kezelni.
- Képes legyen Cookie-kat elmenteni és a szervernek visszaküldeni.
- Lehessen vele fájlt letölteni (bufferelten, ahogy minden normális letöltő).
- Redirect támogatás (Moved Permanently).
- Valahogy lehessen vele fájlletöltést folytatni (Partial Content).
Előnyök:
- Thread safe.
- Tud proxy-zni.
Amiket próbáltam:
- Synapse: Tudja a HTTPS-t. Egyvalami viszont kicsit kivágta a biztosítékot. Tényleg komolyan gondolták, hogy egy fájlt letölteni csak úgy lehetséges, hogy először behúzza az egészet a memóriába TMemoryStream-ként, majd onnan lehet csak lementeni? A hivatalos példája is ezt mutatja, más megoldást nem találtam.
- lNet: több, mint 3 éve nem került fel új package a repo-ba, doksi hiányos, példaprogramhoz semmi magyarázat. Folyamatosan hsUnknown jön vissza status-nak, ha le akarok valamit tölteni.
- fphttpclient: Még ez volna a legjobb, ezzel sikerült letöltenem fájlt is, meg cookie-znom is. Igenám, de persze, hogy nem tud HTTPS-t, csak a development verziójában (FPC része és annak a development trunk-jében van olyan fcl-web, ami tud HTTPS-t), azt meg nem volt kedvem felszenvedni. Esetleg ha valaki tudna segíteni abban, hogyan tudom projekthez hozzáadni csak az fcl-web és fcl-net csomagokat, megköszönném. Persze az is lehet, hogy hülyeséget kérdezek és ez nem lehetséges. Nekem az is tökéletes, ha pl. ssl_openssl-en keresztül vagy akárhogy én hozom létre a HTTPS tunnel-t és átadom az fphttpclient-nek. Proxy-zni sajnos nem tud.
Valakinek valami jobb ötlet? :)
Hozzászólások
A freepascal/lazarust nem ismerem annyira, de a CURL az egy jól bevált library, ahogy létezik van freepascalosítva is: http://curl.haxx.se/libcurl/pascal/
.NET szerves része a HttpWebRequest, tudja mindezt, csak nem Pascal. Ha a Pascal kőbe van vésve, akkor bocs, de ha nyitott vagy új dolgokra, és egyszerűen, szívás nélkül akarod megoldani, akkor én ezt tenném.
--