idHTTP przyśpieszanie GET i POST

0

Potrzebuję przyśpieszyć wywoływanie GET i POST. Przykładowo POST trwa 2,5s, bo pobiera content, który nie jest mi potrzebny.

Robię:

idHTTP1.Request.ContentRangeStart:=5;
idHTT{1.Request.ContentRangeEnd  :=6;

ale to nie działa... sniffuje ruch w sieci i header jest dobrze ustawiony: "Range: bytes=5-6", a mimo wszystko pobiera całość.

Wie ktoś jak rozwiązać ten problem?

0

Dzięki, Head się świetnie sprawdza, ale też potrzebuje pobrać tylko kilkaset pierwszych bajtów, a range nie działa jak trzeba.

Uh, nie da się edytować posta.

Zapomniałem napisać, że chodzi mi głównie o metodę POST. Po wysłaniu POST otrzymuję długi Content, z którego potrzebuje tylko kilkaset bajtów, a takto pobiera całość i to trwa za długo, muszę to przyśpieszyć.

0

Hmm, w teorii w Indy się to da zrobić. W praktyce jak widać są problemy ;)
Przesiądź się na Synapse to powinny się dać wszystko, z tym to Olesio Ci pomoże jak ładny temat założysz

0

Pod Synapse można spróbowac, ale z tego co pisałem w swoim artykule wzorując się na dokumentacji projektu, to nie wiem czy się da to zrobić tak jak chcesz. Bo dokumentacja Synapse wyraźnie wskazuje, że do nagłówka nie można wstawić wielkości dokumentu, napisałem o tym w artykule na: Obsługa protokołu HTTP przy użyciu pakietu Synapse - ja za to mogę polecic opinię MiśkaD, którego poproszę aby spojrzał na ten wątek. Jednak wydaje mi się, że Synapse również będzie pobierać całość zwróconego kodu html lub pliku do własności Document (TMemoryStream) i jeżeli taka operacja trwa dłużej, bo plik jest duży to można ewentualnie pokazać tego przebieg, ale chyba nic więcej się nie da zrobić, chociaż co do tego nie jestem pewny.

0

A ja bym to zrobił lekko zmieniając kod, tak aby przy pobraniu pakietu można było wybrać czy połączenie ma być kontynuowane czy nie, a gdy pobiorę wszystko co chcę, po prostu zamknął połączenie na chama :P .

0

Content-Range działa tylko z HTTP 1.1 - sprawdź czy serwer, do którego chcesz się dostać go obsługuje.
Zobacz jeszcze to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

0
payl napisał(a)

A ja bym to zrobił lekko zmieniając kod, tak aby przy pobraniu pakietu można było wybrać czy połączenie ma być kontynuowane czy nie, a gdy pobiorę wszystko co chcę, po prostu zamknął połączenie na chama :P .

Na to samo wpadłem i faktycznie pomaga, w zdarzeniu OnWork wywołuje idHTTP.Disconnect, gdy już odczytamy ileś tam bajtów.
Tylko znowu z tym jest taki problem, że musimy pobierać od początku, ale w zasadzie załatwia mój problem.

Misiekd napisał(a)

Content-Range działa tylko z HTTP 1.1 - sprawdź czy serwer, do którego chcesz się dostać go obsługuje.
Zobacz jeszcze to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

Obsługuje HTTP 1.1. Przejrzę sobie jeszcze ten artykuł i dam znać czy coś z tego mogło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1