-
Dmitriy (19.05.10 10:50) [0]Здравствуйте уважаемые мастера!
Есть необходимость в вашей помощи! Встал вопрос: а можно ли как-то учитывать трафик во время отправки запроса на сервер и получения от него ответа?
Задаю такой вопрос вот почему: для отправки на сервер использую функцию HttpSendRequest. Так вот эта функция посылает запрос и видимо получет ответ сервера, т.к. после ее выплнения можно прочитать заголовки, а сколько трафика истрачено неизвестно. -
Rouse_ © (19.05.10 11:11) [1]Смотри в сторону HttpQueryInfo и флагах HTTP_QUERY_RAW_HEADERS_CRLF + модификатор HTTP_QUERY_FLAG_REQUEST_HEADERS
-
Dmitriy (19.05.10 12:25) [2]
> Смотри в сторону HttpQueryInfo и флагах HTTP_QUERY_RAW_HEADERS_CRLF
> + модификатор HTTP_QUERY_FLAG_REQUEST_HEADERS
Прошу прощения, но в каком смысле?
Ведь почему-то HttpQueryInfo возвращает результат только после выполнения функции HttpSendRequest, а не до неё или возвращает не то, что нужно. А мне желательно учитывать трафик во время выполнения самой функции. Такое в принципе возможно? -
Rouse_ © (19.05.10 12:50) [3]До нее он возвращает весь запрос который уйдет на сервер, он и будет твоим исходящим трафиком который тебе нужно посчитать. После нее он отдаст тебе то что вернул сервер - это будет твой входящий трафик. Суммируй и будет тебе счастье.
-
Dmitriy (19.05.10 13:09) [4]
> До нее он возвращает весь запрос который уйдет на сервер,
> он и будет твоим исходящим трафиком который тебе нужно
> посчитать
Допустим,может так оно и должно быть в принципе, но я попробовал вызвать HttpQueryInfo с этим флагами до HttpSendRequest и она мне выдала, что-то типа POST 'название скрипта' HTTP/1.1, однако уже после HttpSendRequest возращает именно 'весь запрос который должен уйти на сервер'. Может я что не так делаю?
Функцию вызыва следующим образом:
//bufferLength,index:cardinal;
//buffer:array [0..1204] of char;
bufferLength := SizeOf(buffer);
index := 0;
rs := HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF or HTTP_QUERY_FLAG_REQUEST_HEADERS, @buffer, bufferLength, index); -
Rouse_ © (19.05.10 13:11) [5]Второй вызов делай без модификатора HTTP_QUERY_FLAG_REQUEST_HEADERS - ибо именно он отвечает за отображение исходящего
-
Dmitriy (19.05.10 14:22) [6]А всё таки, можно ли получить заголовки для отправки ДО вызова HttpSendRequest?
-
Rouse_ © (19.05.10 14:25) [7]Только исходящие, т.к. входящих без вызова нет и быть не может.
-
Сергей М. © (19.05.10 15:24) [8]
> Dmitriy
WinInet не даст актуальных данных о трафике, особенно если дело касается биллинга, ибо
- доступны данные только о прикладном трафике
- возможная работа через HTTP-прокси вносит свои коррективы в реальный прикладной трафик