Доброй ночи.
Исходные:
Использую VBA макросы (самописные) для управления магазина на платформе Insales. У них прекрасное API и необходимая документация.
Система Win 7 (64), Excel 2010 (64). Использую библиотеку Microsoft xml, v6.0
Суть проблемы:
Код передает запросы на сайт, и если запросов не много, не более 1000 - все нормально.
Часть кода:
Скрытый текст |
---|
Код |
---|
Select Case flag
Case 1 'POST
'цикл по всем seo-фильтрам, с вызовом функции добавления фильтра на сайт
For i = 1 To kol_ishod
If Ishod(i, 1) <> "" Then
'пауза при достижении каждых 500 запросов (6 минут)
If i = m * 490 Then
Application.Wait Now + TimeSerial(0, 6, 0)
m = m + 1
End If
'создание запроса
'создание тела запроса
myxml = "<?xml version=""1.0"" encoding=""UTF-8""?><filter>"
...
...
'вызов функции отправки seo-фильтра на сайт
Call SendPostXML(cod & "@site.ru/admin/collection_filters.xml", myxml, Status, statusText, responseText)
Application.Wait Now + TimeSerial(0, 0, 1)
adr_ishod(i, Param(5, 1) + 2) = Status
adr_ishod(i, Param(5, 1) + 3) = statusText
adr_ishod(i, Param(5, 1) + 4) = responseText
'Обработка ошибок
Select Case Status
Case 500 'Название уже существует
Case Else
'поиск "filter id" и "permalink"
a = InStr(1, responseText, "<permalink>") + 11: b = InStr(1, responseText, "</permalink>"): adr_ishod(i, Param(5, 1) + 1) = Mid(responseText, a, (b - a))
a = InStr(1, responseText, "<id type=""integer"">") + 19: b = InStr(1, responseText, "</id>"): adr_ishod(i, Param(5, 1)) = Mid(responseText, a, (b - a))
End Select
End If
Next
Case 2 'DELETE
... |
|
Функция которая передает код:
Скрытый текст |
---|
Код |
---|
'POST
Private Function SendPostXML(str, myxml, Status, statusText, responseText)
Dim myHTTP As MSXML2.XMLHTTP 'HTTP variable
Set myHTTP = New MSXML2.XMLHTTP 'HTTP object
Dim myDom As MSXML2.DOMDocument 'create dom document variable 'stores the xml to send
Set myDom = New MSXML2.DOMDocument 'Create the DomDocument Object
myDom.async = False 'Load entire Document before moving on
myDom.LoadXML myxml
myHTTP.Open "POST", str, False 'open the connection
myHTTP.setRequestHeader "Content-Type", "application/xml"
myHTTP.Send myDom.XML 'send the XML
Status = myHTTP.Status 'Display the response
statusText = myHTTP.statusText
responseText = myHTTP.responseText
End Function
|
|
Но необходимо передавать по 20-100 тысяч запросов. И тут рандомно с частотой 1000-2500 запросов выскакивает ошибка 800c0008 (см. скриншот)
Суть вопроса:
Что можно сделать чтобы не выскакивала ошибка. Перерыл интернет - к сожалению, ничего не нашел.
В общем: товарищи кто знает - подскажите пожалуйста. Только попроще, я не профессиональный программист.
PS. В коде присутствуют временные задержки - тех. часть (не более 500 запросов в 5 мин) и еще по секунде поставил после каждого запроса - не помогло.
Пробовал и по wifi к интернету подключаться и по кабелю - выскакивает ошибка.