Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA: MSXML2.XMLHTTP: множественные запросы / 18 сообщений из 18, страница 1 из 1
23.10.2010, 12:42
    #36915819
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA: MSXML2.XMLHTTP: множественные запросы
Здравствуйте, уважаемые. Написал макрос в 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
23.10.2010, 12:51
    #36915825
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA: MSXML2.XMLHTTP: множественные запросы
.Михаил., скажите какую подключаете библиотеку чтобы код работал???
...
Рейтинг: 0 / 0
23.10.2010, 12:54
    #36915829
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA: MSXML2.XMLHTTP: множественные запросы
Ципихович Эндрю,

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

По http ничего сказать на могу, не работал, так..., вопрос выходного дня - зачем вы эмулируете цикл For с помощью Do причем даже через другую переменную flag, а не непосредственно через step?
...
Рейтинг: 0 / 0
23.10.2010, 13:21
    #36915847
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA: MSXML2.XMLHTTP: множественные запросы
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
23.10.2010, 14:55
    #36915896
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA: MSXML2.XMLHTTP: множественные запросы
.Михаил.Интересует следующая конструкция:
Код: plaintext
1.
2.
3.
Do While XMLHTTP.readyState <>  4 
         DoEvents
Loop
Может быть что из-за этого данные отправляются долго?Из-за этого программа просто ждет, пока данные не отправятся, запрос же асинхронный.

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

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

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


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