Klasa HttpSession
• tech • 216 słów • 2 minuty czytania
Ta notatka została oznaczona jako wymagająca dopracowania: linki, mal-repo.
Zawartość wpisu może ulec zmianie, zatem zapraszam do ponownych odwiedzin w niedalekiej przyszłości :)
Do bibliotek pisanych w C++ typu grono, pinger i blip potrzebowałem jakiejś prostej i obiektowej obsługi sieci, sesji HTTP. Oczywiście nie będę się męczył z gołym WinAPI. A także, aby w jakimś stopniu zapewnić przenośność głównej biblioteki, w jakich będzie wykorzystywana sieć, zaimplementowałem sobie prostą klasę HttpSession
;)
Korzysta ona z WinINet, więc sama obsługa sieci nie jest crossplatformowa, ale każdy kto będzie chciał użyć docelowej biblioteki wykorzystującej HttpSession
na innej platformie, sam sobie będzie musiał taką obsługę sieci zaimplementować, zachowując jedynie publiczny interfejs tej klasy.
Osobiście bibliotekę do obsługi grona, pingera, czy blipa miałem wykorzystać w pluginach do komunikatora Tlen.pl, więc nawet nie kombinowałem nad jakąkolwiek implementacją klasy sieciowej na inne systemy.
Ostatnio nawet naszła mnie taka myśl, aby napisać całą bibliotekę do obsługi sieci. Nie tylko http, ale także ftp, osobne klasy reprezentujące url, czy ciasteczka. Ale nie jest mi to akurat potrzebne, więc póki co, skończyło się tylko na pomyśle.
W sumie pierwsze implementacje tej klasy były bardzo proste, ale kilka dni temu postanowiłem ją przepisać, tak, aby bardziej elastyczne było jej używanie w różnych projektach.
Aktualnie kod leży w lokalnym repozytorium na hdd, ale wrzuciłem najnowszą rewizję na stronę, może komuś się jeszcze przyda i skorzysta. Adres strony: projects.malcom.pl/httpsession/. Na stronie tej można także znaleźć więcej informacji, plus jakiś mały przykład wykorzystania.
Komentarze (2)
A libcurl nie wystarczyłby ci?
Pewnie wystarczyłby, ale po co linkować i uzależniać się od kolejnego liba?
Skoro potrzebowałem obsługę HTTP tylko na platformy microsoftowe to WinINet wydaje się lepszym rozwiązaniem. Do tego dostaję malutki rozmiar wynikowego kodu przy zastosowaniu
HttpSession
.Dla porównania moja wtyczka do pingera (o większej funkcjonalności) zajmuje ~150KB w porównaniu z oficjalną o rozmiarze przekraczającym 1MB, która linkuje statycznie curla i coś do xmla, zamiast wykorzystać to co jest dostępne, czy to w systemie, czy tlenie ;)