powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
6 сообщений из 6, страница 1 из 1
Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
    #37154465
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хотел напрягать с вопросами...вроде разобрался немножко сам
Посмотрите пожалуйста, может быть есть замечания. Хотел спросить правильно ли я транслировал в язык VB, так как точных примеров в нете я не нашел. Инспектировал с помощью плагина http://www.ieinspector.com .
В бравзере было так:
(Request-Line):GET /hit?rhttp%3A//vkontakte.ru/********;s1440*900*32;uhttp%3A//vkontakte.ru/*********;*.************* HTTP/1.1
Host:counter.yadro.ru
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1
Accept:image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language:ru,en-us;q=0.7,en;q=0.3
Accept-Encoding:gzip,deflate
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Referer: http://vkontakte.ru/********
Cookie:VID=*************
Cache-Control:max-age=0

Я перевел это так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
                Dim HttpReq As New MSXML2.XmlHttp

                Call HttpReq.open("GET /hit?rhttp%3A//vkontakte.ru/*********;s1440*900*32;uhttp%3A//vkontakte.ru/********;*.************* HTTP/1.1", "http://vkontakte.ru/", False)
                HttpReq.setRequestHeader "Host", "Counter.yadro.ru"
                HttpReq.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1"
                HttpReq.setRequestHeader "Accept", "image/png,image/*;q=0.8,*/*;q=0.5"
                HttpReq.setRequestHeader "Accept-Language", "ru,en-us;q=0.7,en;q=0.3"
                HttpReq.setRequestHeader "Accept -Encoding", "gzip , deflate"
                HttpReq.setRequestHeader "Accept-Charset", "windows-1251,utf-8;q=0.7,*;q=0.7"
                HttpReq.setRequestHeader "Keep-Alive", "300"
                HttpReq.setRequestHeader "Connection", "keep -alive"
                HttpReq.setRequestHeader "Referer", "http://vkontakte.ru/********"
                HttpReq.setRequestHeader "Cookie", "VID=*********"

     HttpReq.send rQuery


stop
Text1 = HttpReq.responseText
Text3 = HttpReq.getAllResponseHeaders
'open "c:\prosto.txt" for output as #1:print #1,form1.Text1: close #1
Я проверял. У меня работает. Я просто не знаю правильно ли написал в HttpReq.open "GET /hit?rhttp%3A//vkontakte.ru/*********;s1440*900*32;uhttp%3A//vkontakte.ru/********;*.************* HTTP/1.1"
Я встречал только "GET" или "POST". Увидел в мозиле именно такую строчку, не было куда поставить, поставил в HttpReq.open
Работает. Просто поправте если не так что понял. Если правильно, так прошу подтвердить только.
...
Рейтинг: 0 / 0
Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
    #37154632
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В пост методе есть также значения, например
act login
q 1
al_frame 1
expire
captcha_sid
captcha_key
from_host vkontakte.ru
email *******************
pass *******************

Куда их передавать ?
...
Рейтинг: 0 / 0
Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
    #37154920
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159,
Метод open(method, URL, async, userName, password)
Описание: Определяет метод, URL и другие опциональные параметры запроса; параметр async определяет, происходит ли работа в асинхронном режиме. Последние три параметра необязательны. Источник .
Методы HTTP бывают разные
Судя по указанному хосту, я бы сделал так:
Код: plaintext
1.
2.
HttpReq.open "GET", "counter.yadro.ru" & _
"/hit?rhttp%3A//vkontakte.ru/*********;s1440*900*32;uhttp%3A//vkontakte.ru/********;*.*************", False
Если надо отправить данные методом POST, то данные записать надо в rQuery и добавить соответствующие HTTP-заголовки.

Если вы укажите в HTTP-запросе Accept-Encoding:gzip,deflate и веб-сервер поддерживает данное сжатие данных, то надо будет позаботиться об извлечении данных из HTTP-ответа, если MSXML2.XmlHttp за Вас это не сделает. В противном случае убрать Accept-Encoding:gzip,deflate .

Accept:image/png,image/*;q=0.8,*/*;q=0.5 - в ответ придет картинка, сохранить ее можно так:
Код: plaintext
1.
2.
3.
4.
5.
With CreateObject("ADODB.Stream")
     .Mode =  3 : .Type =  1 : .Open
     .Write HttpReq.responseBody
End With
'наверное это капча
...
Рейтинг: 0 / 0
Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
    #37154933
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний код (см. выше) испавил:
Код: plaintext
1.
2.
3.
4.
5.
With CreateObject("ADODB.Stream")
     .Mode =  3 : .Type =  1 : .Open
     .Write HttpReq.responseBody
     .SaveToFile "C:\img.png"
End With
...
Рейтинг: 0 / 0
Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
    #37155574
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за детальное обьяснения. Теперь все стает на свои места
...
Рейтинг: 0 / 0
Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
    #37161685
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное кривые руки)))
поскольку отсутсвующее времья я занимался изучением MSXML2

Первый раз у меня получилось когда я еще много не знал, а только догадывался
тоесть я посмотрел как видит программа HttpAnalyzer V6 и записал так
Код: plaintext
Call HttpReq.open("GET /hit?rhttp%3A//vkontakte.ru/*********;s1440*900*32;uhttp%3A//vkontakte.ru/********;*.************* HTTP/1.1", "http://vkontakte.ru/", False)

Потом я пробовал
Код: plaintext
1.
Call HttpReq.open("GET", "http://vkontakte.ru/" & _
"/hit?rhttp%3A//vkontakte.ru/*********;s1440*900*32;uhttp%3A//vkontakte.ru/********;*.*************", False)
в том случае я был не авторизирован

Я отбросил это все на задний план и начал копать с основ HTML 1.1 протокола
Также припомнил что можно подключаться и через Socket. С ним и работаю сейчас. Получилось.
По правде только стыкнулся с Accept-Encoding:gzip,deflate. Оставил запись Accept-Encoding:deflate и все GOOD)

Ошибки возникали только из-за того что сервера принимают запрос строго по шаблону.

Теперь остается разобраться с POST
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сверте домашнее задания "Запрос GET через MSXML2.XmlHttp"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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