Страница: 1 |
Страница: 1 |
Вопрос: HTTP Запросы
Добавлено: 05.12.06 01:17
Автор вопроса: Surok
1. Как возможно узнать что запрос полностью выполнен (скажем, необходимо узнать момент того что сервер вернул всю информацию по запросу)?
2. Как должен выглядеть запрос чтобы сервер возвращал инфу частями (или только одну часть)...скажем, по 200 кБ.?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 05.12.06 01:32
а что ты используешь?
обычно после окончания передачи информации удаленная сторона закрывает сокет
Номер ответа: 2
Автор ответа:
Surok
Вопросов: 36
Ответов: 106
Профиль | | #2
Добавлено: 05.12.06 02:29
я хочу научиться работать с запросами и написать анализатор страниц...вот и думу думаю, собираю материал по теме.
мне надо XML файл анализировать...а если он скачан не полностью? XML parser же его не разберет на части..я так понял, что надо проверять целостность скачанного файла..
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 05.12.06 12:54
1) В начале передается head, где-то в нем есть что-то вроде Content-Length:123
вот 123 и есть размер в байтах, всех данных что ты запрашиваешь (т.е. развер всей страницы, файлы итп...)
Вот при выкачки данных проверяешь, если уже выкачали 123, то все - конец, инче продолжаешь качать...
2) А это нет от запроса зависит, а от того как ты работаешь с сокетами...
юзая api recv, примерно так...
dim buffer as String * 16384
bytes = recv(socket, buffer, 16384, 0)
If bytes > 0 Then data = left(buffer, bytes)
16384 - и есть размер данных которые ты получаешь одним пакетом. Почему 16384 - потому что больше одним пакетом редко кто отдаст, и память сильно выделять тоже криво...
If bytes > 0 Then data = left(buffer, bytes)
т.е. сервер может вернуть и меньше чем 16384, но api recv вернет именно тот размер, который она получила... по этому размеру и отрежим строку...
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 05.12.06 22:07
Content-Length поле не обязательно.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 06.12.06 01:25
Вот когда оно не обязательно, и не возможно определить размер файла, но тогда по таймауту...
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 06.12.06 01:26
p.s. Имел ввиде передается, от сервека к клиенту. Вообщем тому, кто отправил запрос...