WinHTTP - OnResponseFinished, данные доступны не полностью

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

WinHTTP - OnResponseFinished, данные доступны не полностью

Сообщение djalex777 » 31.05.2009 (Вс) 9:30

Отправляю запрос на сервер. К примеру такой:
Код: Выделить всё
dim WithEvents wh as WinHttp.WinHttpRequest
dim Body as string, req as Boolean
...
req = False
wh.Open "GET","http://www.google.ru",true
wh.send

'Жду ответа
Do While Not req
DoEvents
Loop

if  instr(Body, тут_то_что_я_ищу)>0 then
msgbox "Нашли"
end if
...

Ответ получаю асинхронно, в событиии OnResponseFinished
Код: Выделить всё
...
Private Sub wh_OnResponseFinished()
if wh.status = 200 then
   Body = StrConv(wh.ResponseBody, vbUnicode)
   req = True
end if
End Sub
...


По коду - если я нахожу слово в ответе, то вывожу MsgBox. Так вот - это слово всегда есть в ответе, но не всегда его находит. Задумался почему так происходит и обнаружил, что в Body не всегда содержится ответ полностью, а буквально через секунду он там уже полностью загружен, т.е.
Код: Выделить всё
...
Private Sub wh_OnResponseFinished()
dim s as string
if wh.status = 200 then
   s = StrConv(wh.ResponseBody, vbUnicode)
   sleep 1000 
   Body = StrConv(wh.ResponseBody, vbUnicode)
   req = True
end if
End Sub
...

В переменной s сохраняется недозагруженный ответ, а в Body ответ полностью. Надо отметить что так происходит не всегда, а в редких случаях. (ОС Windows Vista Home Premium 32Bit с последними обновлениями, на других ОС не пробовал). Никак не могу понять почему так происходит, и как решают данную проблему. Может кто знает?

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 76

    TopList