Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Проверка этого действия через снифер показала что, часть запроса которая "Data" (тело), отправляется верно. А вот "Top" востринимает только адрес, но не методы. И заголовок получается сам по себе.
Мне же нужно указать пару пунктов лично, таких как: Referer: Cookie: Content-Type:
Добавлено (11 Январь 2010, 13:23) --------------------------------------------- Так глубоко я не копал в этой функции, но то что пост отправляется без проблем я точно знаю, тут уже обсуждался вопрос. На счет заголовка, наврятли что то можно исправить, эта функция такая какая есть. Попробуй отправить тестовый вариант на сервер, а там через скрипт-пхп разобрать и посмотреть что приходит, может все и нормуль
Добавлено (11 Январь 2010, 13:45) --------------------------------------------- можно рискнуть прям в адресе добавить эти заголовки, я точно не помню синтаксис, но типа этого:
ну мона проверить и снифером, правда я запускал один снифер, но так и не смог ничего отловить, вернее разобратся в самой программе-замудреная какая то оказалась. А какая из них попроще не стал выяснять
если перед адресом ставить POST, действие вызывает ошибку и запрос не посылается. ------------------------- Вообще, команда "InternetPost" выдаёт вот что: (привожу только заголовок)
Quote
POST /?vote%20HTTP/1.1Host:%20www.XXXX.ruReferer:%20http://www.nitro-gate.ru/index.htmlContent-Type:%20multipart/form-data; HTTP/1.1
Accept: Accept: */*
Content-Type: application/x-www-form-urlencoded
User-Agent: .....
Host: ХХХХ.ru
Content-Length: 117
Cache-Control: no-cache
Cookie: menuCookie=1%200%200%200%200%200%20
участок помеченный зелёным - это вводимые мной данные. Пункт "Host" (помеченное синим) НБ подставляет сам, опираясь на начальную часть адреса (ту что предшествует "/?vote...") ------------------------------
Попытка вписать методы в поле "Top"
Code
InternetPost "[Top]" "[Data]" "[Rezult]" ""
приводит к тому что все строки объединяются, а пробелы замещаются на %20, это видно из приведённого выше (зеленая строка)
Quote (Alex3A)
Ну что ж, пытайтесь, "[#13] на \r\n" в заголовке все это будет видно если что не так.
" [#13][#10] и \r\n " [#13][#10] работает только в поле "Data", и работает правильно (в отличие от \r\n). А в "Top", как уже было сказано - игнарируется, и строки склеиваются в одну.
Сообщение отредактировано шнырь - Вт, 12 Января 2010, 03:50
Во первых, заголовок показа у тебя не корректно, имеют значения переносы строк, Content-Length: 117 таки по посту что то идет, как и кто ставит у тебя куки не понятно, потом, адрес адресом а пост постом, данные поста идут после заголовка, двойной перевод строки отделяет заголовок от данных пост, а их у тебя 117 байт.
Тут у тебя вообще какой то мусор, так что вводимые тобою данные, какая то фигня. Элементы заголовка разделяются не пробелами а переводом строки. Будут ли переписаны заголовки - вот в чем вопрос Content-Type: application/x-www-form-urlencoded на html "Content-Type:%20multipart/form-data"; что за точка с запятой и почему все слитно? В общем надо выяснить что и как можно поменять а чего нельзя, и на этом успокоится. А вообще, для подобных испражнений, лучше всего иметь голый ТСР движок, тогда можно лепить любые заголовки под любой протокол, хоть хттп фтр мыло...
Начнём по порядку, хотя и придётся повториться - Alex3A, на "Content-Length: 117" можешь не смотреть - это НБ самостоятельно подсчитал размер данных которые я заношу в переменную "Data" (синтаксис команды такой: InternetPost "[Top]" "[Data]" "[Rezult]" ""). Эту часть (тело запроса) я не показал. Она передаётся правильно, со всеми переносами строк ([#13][#10]). Это раз. Два: По поводу куки я и говорю что НБ сам распоряжается элементами заголовка, в частности:
это параметры приведены здесь дословно как их отображает снифер (кроме XXXX.ru). И откуда НБ их берёт мне не ясно (за исключением того что выделено оранжевым)
- это параметры заголовка которые я пробавал указать, это то что было в переменной "Тор" (синтаксис команды: InternetPost "[Top]" "[Data]" "[Rezult]" ""). А вот что я хотел передать:
только НБ проигнарировал переносы ([#13][#10]) и всё это поместил в одну строку перед которой поставил "POST" а после "HTTP/1.1" и дальше указал Свои элементы заголовка.
Quote (Alex3A)
В общем надо выяснить что и как можно поменять а чего нельзя, и на этом успокоится.
Ага, только мне нехватает винтиков чтобы это выяснить...
---------------------------------------
Quote (Сергей)
Quote
так вроде по синтаксису правильнее будет.
Вроде бы, Сергей, вроде бы. Вопрос в том КАК этот запрос послать с нужными параметрами, а не с теми которые самостоятельно ставит Neobook???
Кстати, а откуда эта строка -
Quote (Сергей)
IdHTTP1.POST('http://хх.ру/тест.php',дата);
из PHP или где-то из НБ выловлена? Синтаксис интересный, не припоминаю чтоб и Neobook подобное встречалось.
-----------------------------------
Quote (Alex3A)
А вообще, для подобных испражнений, лучше всего иметь голый ТСР движок, тогда можно лепить любые заголовки под любой протокол, хоть хттп фтр мыло...
А что Это, Как им пользоваться и Где раздобыть, эту прелесть???
И ещё, - нельзя ли сделать тоже самое стандартными средствами Windows или какой-нибудь крохотной програмкой (желательно из серии Portable)??? а?
Сообщение отредактировано шнырь - Ср, 13 Января 2010, 06:17
шнырь, Все достаточно просто, нбшные функции могут поддерживать установку заголовков, а могут и не поддерживать, и это надо выяснить и с этим смириться По синтаксису "Тор" предполагает адрес и не более, если искуственно заставить правую часть адреса восприниматься как перевод строки, то она будет интерпритироваться как заголовок. Если этого не удастся зделать, в виду того что обработчик этой части перекодирует такие вещи, то тут уж ничего не сделаеш. Если только не найдеш способ его обмануть, посмотри способы кодирования в хтмл.(урл, хекс кодирование). \r\n то же один из способов кодирования.
Quote (шнырь)
А что Это, Как им пользоваться и Где раздобыть, эту прелесть???
Если ты заметил, в снифере, перед кодами заголовка есть немного непонятного кода, это и есть коды ТСР протокола. ТСР это протокол более низкого уровня, так сказать транспорт, обеспечивающий верное соединение и верную передачу данных, так сказать тележка на которой возятся протоколы - надстройки, полный список стандартных надстроек мож посмотреть в вики. В данном случае, это передача текста представляющего показанный тобою заголовок - хттп протокол. Передав другой текст, соответственно иному протоколу, на соответствующий порт, ты уже получиш обмен не по хттп а по иному протоколу, поп3, фтп и так далее. Таким образом имея движок ТСР в зависимости от параметров соединения и передаваемого текста он превращается или в браузер, или в почтовик или в фтп клиент, аську и прочее. Ну ты уже догадался что функции "InternetPost" и "InternetGet" используют такой движок, только полного доступа к нему не дают, часть нужного текста производят сами. Теперь "Где раздобыть, эту прелесть???" - незнаю Для ммв такую "прелесть" я сделал уже давно, и не только чистую, но и обвешанную несколькими собственными протоколами обмена
Quote (шнырь)
И ещё, - нельзя ли сделать тоже самое стандартными средствами Windows или какой-нибудь крохотной програмкой (желательно из серии Portable)??? а?
Ну просто легко, и да же в нб! Есть такая фича - браузер, вставляется в нб, элемент хтмл форм обеспечит тебе формирование запроса и по посту и по гету НБ вроде поддерживает взаимосвязь с хтмл на уровне явы, так что помучившись ты сможеш получить и результат запроса. Помни что вариантов решения задачи может быть множество. Не мытьем, так катаньем
Quote (шнырь)
(желательно из серии Portable)???
Нормальная, с моей точки зрения, прога должна запускатся без всякой установки, за исключением если нужно для ее работы ставить драйвера. Все остальное, буржуйские извращения, засоряющие реестр. Это вовсе не есть круто, и подражать им не нужно. Все таки здравый смысл имеет место, раз появилась такая категория - портабельный софт, как по мне, это и есть нормальный, не извращенный софт
Alex3A, \r\n, было опробованно в первую очередь. Результатом был тотже "мусор" где \r\n остались частью строки адреса (в отличие от проигнорированных [#13][#10]). Об хекс кодировании попробую разузнать...
Quote (Alex3A)
Ну просто легко, и да же в нб! Есть такая фича - браузер, вставляется в нб...
с форм я и начал, оказалось просто, вот только пытаясь автоматизировать процесс отправки я застрял. Ввести данные получилось, а нажать на субмит - только через имитацию клика мыши либо нажатия клавиши - но для этого требуется быть активным тому окну в которое я пытаюсь имитировать эти действия. Если переходишь в другое окошко, то всё летит в тар-тарары. Пробывал через JavaScript, застрял на том что в браузвере, который IE, отключена возможность исполнять скрипты - из-за чего выходит ошибка. А как включать/отключать эту возможность программно - незнаю. (кажется через реестр, но я не в курсе где и что).
Quote (Alex3A)
Для ммв такую "прелесть" я сделал уже давно, и не только чистую, но и обвешанную несколькими собственными протоколами обмена
А вот с этого места поподробнее. ММВ я ещё не смотрел, ты имеешь в виду - сделал плагин к нему или как? (ссылочку на плагин, пожалуйсто). Или это встроено в сам ММВ?
вот только пытаясь автоматизировать процесс отправки я застрял.
Ну и чего там застряваnm? Если совсем по тупому, составил в нб хтмл текст с нужной формой и установленными переменными, записал на диск и загрузил в браузер, и клацать ничего не надо, ты что не знаеш как запустить скрипт при загрузке страницы и отправить форму? Если нет поищи в сетке, там такого добра навалом.
Quote (шнырь)
сделал плагин к нему или как? (ссылочку на плагин, пожалуйсто).
Смотри на форуме "Плагин CALLER" и у мну на сайте, на форуме самый первый плагин вроде как должон быть "голым", остальные уже с надстройками, давно было уж не помню
Ну и чего там застряваnm? Если совсем по тупому, составил в нб хтмл текст с нужной формой и установленными переменными, записал на диск и загрузил в браузер, и клацать ничего не надо, ты что не знаеш как запустить скрипт при загрузке страницы и отправить форму? Если нет поищи в сетке, там такого добра навалом.
читаем внимательнее:
Quote (шнырь)
Пробывал через JavaScript, застрял на том что в браузвере, который IE, отключена возможность исполнять скрипты - из-за чего выходит ошибка. А как включать/отключать эту возможность программно - незнаю. (кажется через реестр, но я не в курсе где и что).
А за плагин спосибо, нашёл, теперь пойду разбираться
как я понял, nb не поддерживает unicode? нужно получить данные (исходный код web страницы), а она в utf8. internetget возвращает мусор вместо кириллицы, это можно как-то обойти? Как задавать вопросы
Если есть в нб возможность внедрения своего кода в хтмл, как в ммв то вполне можно. Яваскрипит сделает такое на раз, функций для перекодирования там в ассортименте.
Код внедрять, есть такая возможность в Neobook. Только нужно помнить что в свойствах Internet Explorer должна быть включена функция "разрешить выполнение активных скриптов", иначе на некоторые коды будет выскакивать ошибка.
Сообщение отредактировано шнырь - Пт, 22 Января 2010, 04:44
Мда... не буду вдаваться в детали, но связываться с браузером чтобы получить исходник вебстраницы и конвертнуть utf->win1251 (при необходимости) ето полнейшая шляпа. Может быть, возможно решить как-то этот вопрос в плагине, а? Либо скажите как выключить это сообщение, что script executing longer than it expected бла-бла... Пока пользуюсь vbs-скриптом, единственная проблема что иногда вылазиет это окошко. Шарил в реестре, ставил таймаут вручную, бестолку.
Добавлено (24 Январь 2010, 22:30) --------------------------------------------- сделал internetget -> скидываем в файл -> конвертируем файл -> читаем в переменную. так надежнее и тоже достаточно быстро. токо вот файл должен заранее существовать куда скидываешь, создать динамически нельзя как я понимаю... ну это не проблема.
приведи еще раз в точности полностью заголовки запроса и запрос который надо отправить, а то я чтото запутался уже, я vbs скриптом попробую. А то в одном посте одно, в другом другое написано...
Открываешь редактор функций, создаешь новую VBScript функцию, пишешь приведенный код, вызываешь ее в проекте через Call. Показаны только основные моменты отправки POST запросов, "скелет" функции. Редактируешь как тебе надо, а то понаписали всякой хрени не разберешь. Переменная Data - тело запроса В методах objHTTP.setRequestHeader указаны передаваемые заголовки, я оставил которые тебе нада, а User-Agent и Content-Length наверное можно фтопку. Если добавляешь то по аналогии см. синтаксис. После отправки вылезут 2 окна со статусом отправки и ответом сервера, скажешь что пишут. Если не фурычит - проверь еще раз содержимое заголовков и запроса на валидность, сама структура скрипта - рабочая. И еще потом попробуй продублировать заголовок Cookies, в нек-рых случаях его первый вызов игнорируется (это баг был такой раньше).
Добавлено (26 Январь 2010, 11:02) --------------------------------------------- и еще вызывает какие-то сомнения тело запроса - /?vote что это за фигня? обычно впридачу передаются на страницу какие-либо параметры, например vote=parameter, они идут как значения для скриптов (например для submit формы или авторизации) а тут ерунда какая-то, что должно на странице происходить при этом? похоже что ничего
Наверно я как-то коряво объясняю. Ибо в Data никогда не было "/?vote" (это было только в адресе т.е "POST http://wow.xxx.ru/?vote HTTP/1.0"). Ну это детали... А теперь самое важное: я далеко не спец по скриптингу да и с Neobook общаюсь лишь пару месяцев, потому, не затруднит ли вас пошагово обрисовать КУДА сувать этот код и Как всем этим пользоваться? (кстати, "скелет функции" - значит ли это то, что для его работоспособности нехватает изрядного куска кода, или он всёже вполне жизнеспособный объект?) Буду весьма признателен за терпение.
Код записывать (сувать) в редактор функций, который находится по кнопке F11. Жмешь ее, выбираешь кнопку New (Новая), выбираешь язык - VBScript (поддерживается создание функций трех типов), откроется окно редактора куда записываешь (суешь) код и сохраняешь под каким нибудь именем. Чтобы вызвать функцию из проекта даешь команду в скрипте: Call "имяфункции" чтобы не ошибиться, выбери в свойствах обьекта (допустим кнопки, при нажатии на которую запустить функцию) эти пункты:
Потом в окошке нажмешь на шестеренку, откроется окошко выбора где отыщи свою функцию и выбери ее, команда вставится автоматом.
Quote (шнырь)
"скелет функции" - значит ли это то, что для его работоспособности нехватает изрядного куска кода, или он всёже вполне жизнеспособный объект?
Это означает что я из того что увидел до конца так и не понял что куда и зачем, поэтому состряпал функцию на свой вкус, предполагая что ты сечешь фишку и сможешь доделать по своему усмотрению, но вижу что ошибочно
Quote (шнырь)
Ибо в Data никогда не было "/?vote" (это было только в адресе т.е "POST http://wow.xxx.ru/?vote HTTP/1.0").
Ага, значит в функции должно вместо
Code
objHTTP.open "POST", "http://xxx.ru/", False
стоять
Code
objHTTP.open "POST", "http://xxx.ru/?vote", False
Но в таком случае что нужно послать на страницу, какие данные? Где сам запрос который надо отправить, я еще с предыдущего сообщения не понял? Одни заголовки от запроса только пока есть.
Code objHTTP.open "POST", "h t t p://xxx.ru/?vote", False
Тут у вас ошибка в том что знак? используется для передачи данных по гету. Обычно "h t t p://xxx.ru/имястраницы.расширение?vote=чегототам$следующаяпеременная=ххх", если имя страницв не указано, это обращение к индексной странице, что xxx.ru/?vote это обращение к индексной странице и передача по гету переменной vote. Зак ? в урл имеет особое назначение - разделитель между адресом и данными отправляемыми по GET. Если надо передать ? в тексте переменной то он кодируется.
Тут у вас ошибка в том что знак? используется для передачи данных по гету.
да и я смотрю что-то не то здесь... Шнырь, что надо сделать конкретно на вебстранице обьясни толком, отправить туда данные или получить оттудова? Мож ты не так понял принцип, но для получения данных (GET) тоже требуется кое-чего отправить (параметры какие-нибудь, те же заголовки) и ты не путай это с POST методом. Как задавать вопросы
Судя по фрагменту "xxx.ru/?vote", ведь откуда то он же взял такое, передача данных идет по гету. А вообще то если на серваке включена опция меджик, то способ передачи переменных не имеет значения, если их брать не из массивов пост и гет. И как то, сразу передавать переменные и по гет и по пост я не пробовал, хотя вроде как синтаксис такое позволяет, но вот будут ли они обработаны?
ответ: ---------------------------------------- HTTP/1.1 200 OK Date: Wed, 27 Jan 2010 23:29:16 GMT Server: Apache/2.2.12 X-Powered-By: PHP/5.2.10-2ubuntu6.4 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 5148 Connection: close Content-Type: text/html Content-Language: ru
<HTML><HEAD><link rel="SHORTCUT ICON" href="images... ---------------------------------------- и так далее...
а вот это "Content-Type: multipart/form-data;boundary=1BEF0A57B9kd98sl467A" - это я поторопился и загнал из другого проекта, айм соу соу сори
Далее: с вызовом функции - разобрался, а вот с редактором...
Quote (DEMBEL)
...выбираешь кнопку New (Новая), выбираешь язык - VBScript (поддерживается создание функций трех типов), откроется окно редактора куда записываешь (суешь) код и сохраняешь под каким нибудь именем.
Понимашь како дело?, по кнопке F11 распологается такое окно:
жмём "Новая", выплывает
и хде ж здесь "выбираешь язык - VBScript" ??? Если загнать код в Этот редактор то, при запуске, НБ начинает ругаться