powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA: MSXML2.XMLHTTP: множественные запросы
18 сообщений из 18, страница 1 из 1
VBA: MSXML2.XMLHTTP: множественные запросы
    #36915819
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые. Написал макрос в Excel, который отправляет данные на страницу сайта методом POST:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim XMLHTTP As MSXML2.XMLHTTP, step as Integer, flag As Boolean
Set XMLHTTP = New MSXML2.XMLHTTP
step =  1 : flag = True
Do
    XMLHTTP.Open "POST", "http://www.site.ru/page.php?val=1", True
    XMLHTTP.SetRequestHeader "Host", "http://www.site.ru"
    XMLHTTP.SetRequestHeader "Content-type", "application/x-www-form-urlencoded"
    XMLHTTP.SetRequestHeader "Cache-Control", "no-store, no-cache"
    XMLHTTP.SetRequestHeader "Pragma", "no-cache"
    XMLHTTP.SetRequestHeader "User-agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 ( .NET CLR 3.5.30729)"
    zapros = ""
    ' далее в zapros формируются данные, количество символов примерно 250000
    XMLHTTP.SetRequestHeader "Content-Length", CStr(Len(zapros))
    XMLHTTP.send zapros
    Do While XMLHTTP.readyState <>  4 
         DoEvents
    Loop
    step = step +  1 
    If step >  10  Then flag = False
Loop Until flag = False
XMLHTTP.abort
Set XMLHTTP = Nothing
С запросами HTTP работаю первый раз, поэтому данный код предоставляю на "суд" - что лишнее в данном кода, что отсутствует, как можно оптимизировать и т.п.?. Передача данных осуществляется "крайне" долго, по сравнению с браузером. Конкретные вопросы отсутствуют, надеюсь, что при обсуждении появятся. Спасибо.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36915825
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил., скажите какую подключаете библиотеку чтобы код работал???
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36915829
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

Microsoft XML, v6.0 (есть до v3.0), у меня лежит F:\Windows\System32\msxml6.dll
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36915836
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.,

По http ничего сказать на могу, не работал, так..., вопрос выходного дня - зачем вы эмулируете цикл For с помощью Do причем даже через другую переменную flag, а не непосредственно через step?
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36915847
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro.Михаил.,
По http ничего сказать на могу, не работал, так..., вопрос выходного дня - зачем вы эмулируете цикл For с помощью Do причем даже через другую переменную flag, а не непосредственно через step?
Данный код представлен не весь и немного видоизменен. Условие выхода из цикла:
Код: plaintext
1.
If step >  10  Then flag = False
Реально используется другое условие выхода из цикла. Использование цикла Do объясню тем, что заранее неизвестно сколько необходимо будет выполнено итераций. step - это лишь счетчик количества итераций, используется для формирования промежуточного сообщения, типа "Данные отправлены, шаг 3 из 15".
Интересует следующая конструкция:
Код: plaintext
1.
2.
3.
Do While XMLHTTP.readyState <>  4 
         DoEvents
Loop
Может быть что из-за этого данные отправляются долго?
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36915896
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.Интересует следующая конструкция:
Код: plaintext
1.
2.
3.
Do While XMLHTTP.readyState <>  4 
         DoEvents
Loop
Может быть что из-за этого данные отправляются долго?Из-за этого программа просто ждет, пока данные не отправятся, запрос же асинхронный.

А тормоза скорее всего из-за того, что долго формируются 250000 байт текста.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916004
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
А тормоза скорее всего из-за того, что долго формируются 250000 байт текста. При формировании данных выводится некий счетчик выполнения (идет обработка строк в таблице Excel, всего по 1000 строк за итерацию). Данная процедура выполняется не более 10 секунд. Извините, Antonariy , но не 250000 байт текста, а - количество символов. Для HTTP-заголовка Content-Length указывается именно CStr(Len(zapros)) .
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916070
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.Извините, Antonariy , но не 250000 байт текста, а - количество символов.А что, лично у вас символ занимает меньше байта?

.Михаил.Для HTTP-заголовка Content-Length указывается именно CStr(Len(zapros)).Для http-заголовка указывается размер в байтах. Потому что в зависимости от кодировки один символ может занимать до 4х байт. Однако VB6 понимает только win-кодировку, так что в данном случае 250к символов = 250к байт.

Попробуйте для начала отправить один запрос. Если это будет дольше, чем вы предполагаете, значит вы предполагаете не правильно.
.Михаил. Передача данных осуществляется "крайне" долго, по сравнению с браузером.
Ни разу, кстати, не видел форму размером 250кб. Возможно вы сравниваете жидкое с красным.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916087
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет символ=байт согласен.
AntonariyНи разу, кстати, не видел форму размером 250кб. Возможно вы сравниваете жидкое с красным.
Если не видели, это не означает, что таких нет.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916127
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.AntonariyНи разу, кстати, не видел форму размером 250кб. Возможно вы сравниваете жидкое с красным.
Если не видели, это не означает, что таких нет.250кб текста это небольшой роман. Пожалуй, таких форм все-таки нет.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916142
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy250кб текста это небольшой роман. Пожалуй, таких форм все-таки нет.
Представьте, на неком сайте происходит обработка Excel-файла (на некой php-странице). Пользователь в браузере загружает эту php-страницу, указывает Excel-файл и запускает его обработку. В ответ от сервера получает результат обработки (в виде некой таблице) для проверки, все данные находятся в форме, которая может быть очень большая (обрабатываются Excel-файл до 1-2 Мб). После проверки пользователь нажимает на кнопку и все данные методом POST (т.к. форма) отправляются обратно на сервер и записываются в базу данных. Все выше описанные действия происходят в браузере. Такой сайт делал не я, но приходится с ним работать. Все эти манипуляции сказываться на увеличение трафика и при превышении некой нормы на хостинге оплачивается дополнительно. Поэтому Excel-файлы хочу обрабатывать на клиенте (у себя на компе) и результат обработки оправлять напрямую на сервер.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916147
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Михаил.,
похоже умный юзер, на работе писал никто не ответил
Екатеринбург не далеко от Чел. обл.
моё мыло выложено напишите пжл может договоримся мою локальную сеть укротить
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36916891
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос следующий: как можно при помощи VBA сжать информацию для передачи данных на сервер? Заранее известно, что сервер может принимать сжатую информацию - отправляет заголовки Accept-Encoding: gzip (или Accept-Encoding: deflate).
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36919735
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую. Возникла новая проблема (задача). При использовании MSXML2.XMLHTTP в Excel полностью повторяю (моделирую) заголовки http-запроса браузера методом GET. Данные отправляются, ответ получаю - все нормально. Но при неких действиях на сервере данный запрос через браузер возвращает "обновленные" данные, а запрос через MSXML2.XMLHTTP в Excel возвращает все те же данные. Лечится это закрытием Excel-файла. Если его потом открыть и отправить запрос данные возвращаются "обновленными". Нужно исключить закрытие-открытие файла. Такое ощущение, что данные на клиенте кешируются (сохраняются). Но как? где? как их удалить?
По требованию могу попозже выложить код макроса.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36919794
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать при каждом запросе создавать новый объект XMLHTTP.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36919813
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМожно попробовать при каждом запросе создавать новый объект XMLHTTP.Не получается.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36919843
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда добавлять рандомную строчку параметром адреса.
...
Рейтинг: 0 / 0
VBA: MSXML2.XMLHTTP: множественные запросы
    #36920848
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТогда добавлять рандомную строчку параметром адреса.Спасибо. Помогло. В ответе от сервера (тока сейчас обратил внимание) есть заголовок Date .
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA: MSXML2.XMLHTTP: множественные запросы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]