1

Тема: VBS/AHK: Ошибка "разрешение отклонено"

Значится, код:


#Include %A_ScriptDir%\ws4ahk.ahk
StartName := "http://zakupki.gov.ru/epz/order/notice/ea44/view/common-info.html?regNumber="
gui, add, edit, w600 h30 vMyAddress, %StartName%
gui, add, button, gGet, Download
gui, show,,Window
WS_Initialize()
MyStart =
(
Dim URL
Dim xmlhttp
Dim Status
Dim fso
Dim f
)
  WS_Exec(MyStart)
return

Get:
gui, submit, nohide
FileDelete,%A_ScriptDir%\data.html
MyFile = %A_ScriptDir%\data.html
GetPage =
 (
  URL = "%MyAddress%"
  Set xmlhttp = CreateObject("Microsoft.XMLHTTP")

 xmlhttp.Open "GET", URL, False
 xmlhttp.send
 
If xmlhttp.Status <> 200 Then
    MsgBox xmlhttp.Status, xmlhttp.statusText
    'WScript.Quit
End If
 
Dim Text: Text = xmlhttp.responseText
set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile "%MyFile%", True
Set f = fso.OpenTextFile("%MyFile%", 2, True)
'сохранение
f.WriteLine(xmlhttp.Responsetext)
'MsgBox "ok"
)
  WS_Exec(GetPage)
if errorlevel <> 0
{
MsgBox Страница не загрузилась. Код ошибки %ErrorLevel%
Return
}
else
MsgBox Страница загрузилась.
return

guiclose:
  WS_Uninitialize()
exitapp

Запускаем. Открываем http://zakupki.gov.ru, ищем там закупки по каким-нибудь словам, например "оборудован"
Поиск выдает кучу тендеров. Выбираем любой, который по 44-ФЗ (там номера длинные 19-значные), копируем номер и вставляем в конец текста в нашем окне. Жмем Download, прога скачивает страницу успешно, о чем и пишет. Выбираем любой другой номер заказа, втыкаем вместо старого, жмем Download. И вот со второго раза программа нас посылает на три буквы со словами "Разрешение отклонено".
Чую, что проблема либо в коде vbs, либо в самом сайте. Но где именно... кто что знает, подскажите.

2 (изменено: Rom5, 2014-08-21 10:35:51)

Re: VBS/AHK: Ошибка "разрешение отклонено"

В качестве предположения - попробуйте удалять объекты `xmlhttp`, `fso`, `f` в конце своей функции по завершению работы с ними, типа:


Set xmlhttp = Nothing

Код объявлений (Dim) переменных для этих объектов возможно есть смысл переместить в саму функцию получения страницы. Или посоздавать объекты на старте - сразу после Dim-объявления.

Для отладки- добавьте msgbox-вывод значения `URL` - может оно меняется как-то некорректно..

WBR. Roman

3

Re: VBS/AHK: Ошибка "разрешение отклонено"

Rom5 пишет:

В качестве предположения - попробуйте удалять объекты `xmlhttp`, `fso`, `f` в конце своей функции по завершению работы с ними, типа:


Set xmlhttp = Nothing

Код объявлений (Dim) переменных для этих объектов возможно есть смысл переместить в саму функцию получения страницы. Или посоздавать объекты на старте - сразу после Dim-объявления.

Для отладки- добавьте msgbox-вывод значения `URL` - может оно меняется как-то некорректно..

Изнчально вообще все функции: инициализация, код, закрытие - сидели в одном месте и каждый раз заново запускались.
При их разносе функционал не страдал ни в одном их подобных скриптов. Так что насчет объявлений не вариант - они заново переобъявлялись, но проблему это не решало.
URL вообще формируется корректно, это проверялось, да и в коде видно, что там нет косяков.
А вот насчет Nothing это да, надо попробовать...