Нужен совет с XML в VB6

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

Нужен совет с XML в VB6

Сообщение Lenny » 08.10.2007 (Пн) 18:33

У меня есть небольшая процедура:
Код: Выделить всё
Dim Doc As New DOMDocument
Dim nHTTP As New XMLHTTP40
Dim N As IXMLDOMNode
Dim sRemoteURL As String
Dim Url As String
Dim ClientID As String
Dim nRet As String
Set Doc = New DOMDocument
If Doc.Load(Fl) Then
   ClientID="ABCD"
    sRemoteURL = "http://" & Url & "/wwwapp_x/fps.aspx?n=" & ClientID
    nHTTP.open "POST", sRemoteURL
    nHTTP.send Doc.xml
    nRet = nHTTP.responseText
    Do While nHTTP.readyState <> 4
        DoEvents
        Sleep 100
    Loop
End If

При отправке етого файла, первым делом я проверяю на сервере наличие возвратного файла (ниже увидите) Файл отправляетса и серверный файл удаляется без проблем. Теперь я жду возвратного файла
Код: Выделить всё
Sleep 10000
DoEvents
MoreWait:
sRemoteURL = "http://" & Url & "/wwwapp_x/xml/" & ClientID & "_RETURN.XML"
nHTTP.open "GET", sRemoteURL
nHTTP.send
Do While nHTTP.readyState <> 4
    DoEvents
    Sleep 100
Loop
'Stop
nRet = nHTTP.responseText
If InStr(nRet, "The page cannot be found") > 0 Then
    Sleep 10000
    DoEvents
    GoTo MoreWait
Else
    ShellExecute Me.hwnd, "open", "http://" & Url & "/wwwapp_x/xml/" & ClientID & "_RETURN.XML", vbNullString, "", ByVal 1&
    'Stop
End If

Так вот, в первый раз процедура работает нормально, а вот во второй, третий и т.д. возникают проблемы.
1) Даже если файл удален на сервере, nHTTP.responseText всё равно возвращает значение и дату из етого файла, берет откуда то из памяти что ли, или ещё непойму как. Короче получается, файла нет, а значение есть. Как можно с этим бороться? Получается что у меня никогда нет InStr(nRet, "The page cannot be found") > 0, если я работаю с одним ClientID файлом. Спасибо.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 08.10.2007 (Пн) 18:59

Код: Выделить всё
<%
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

...

Lenny
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 103
Зарегистрирован: 15.04.2005 (Пт) 20:06

Сообщение Lenny » 08.10.2007 (Пн) 19:26

Спасибо, за ответ, попробовал, всё равно тот же результат. Помогает только если я закрою VB полностью и открою заново. Может ещё есть какие нибудь соображения. Буду благодарен.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 09.10.2007 (Вт) 8:26

Обе процедуры очень странные. Зачем нужно ждать readyState, если запрос происходит в синхронном режиме? Да еще со sleep'ом? DoEvents вполне достаточно. И вообще ждать 404 - плохо. Сервер должен быстро вернуть вменяемый ответ, что файла нет.
Лучший способ понять что-то самому — объяснить это другому.

Lenny
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 103
Зарегистрирован: 15.04.2005 (Пт) 20:06

Сообщение Lenny » 09.10.2007 (Вт) 16:24

Ну насчёт второй процедуры, мне надо делать кое какие действия с этим файлом, которые занимают пару минут, вот я и поставил небольшой тормоз.


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

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

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

    TopList