|
POST Запрос на 1С | ☑ | ||
---|---|---|---|---|
0
Adept
28.06.12
✎
22:49
|
Цель такая, есть сайт с поиском, надо зайти слить главную страницу, заполнить строку поиска, и отправить POSTом ее на сервер получив результаты. Вопрос такой, куда вставляется результат POST, сама строка которую ввел пользователь?
|
|||
1
quest
28.06.12
✎
22:50
|
на гугле забанили? СП украли? мозг сдан на просушку?
|
|||
2
Adept
28.06.12
✎
23:01
|
(1) Чудак ты на букву М, в СП, этого нет, это специфический вопрос для тех кто занимается интернет программированием, на гугле ищу конечно. Но форум то тоже для этих целей.
Да ... v8: Как подключиться к COM серверу на другой машине в сети? Ничего не напоминает? |
|||
3
quest
28.06.12
✎
23:14
|
я чудак. на букву М. даже боле того - никуа не разу не работал с вебом. НО!
Вопрос такой, куда вставляется результат POST, сама строка которую ввел пользователь? ни какого полового отношения не имеет ни к к com ни к веб ни к 1с. это вопрос логики. или ты не в состоянии прочитать то что в паге после тега form стоит? |
|||
4
Adept
28.06.12
✎
23:21
|
(3) Ну во первых в СП этого нет, как сер утверждал не так давно.
Во вторых, вопрос форматов и вопрос логики ты уже путаешь. А com будет тебе напоминать о твоей самовлюбленной бездарности. Иди дальше писай кипятком. |
|||
5
Zaid
28.06.12
✎
23:25
|
Что использовать чтобы огурцы ложкой банка майонеза?
|
|||
6
Zaid
28.06.12
✎
23:26
|
(0) читай протокол http: wiki:HTTP
|
|||
7
oleg_prg
28.06.12
✎
23:28
|
Может тебе вот это надо
СерверИсточник = "125.70.12.135:8181"; ПроксиСервер=Новый ИнтернетПрокси(); HTTP=Новый HTTPСоединение(СерверИсточник,,,,ПроксиСервер); HTTP.ОтправитьДляОбработки("D:\post.txt","/accounts/Login", "D:\rezult.txt", Заголовки); В файле D:\post.txt пост запрос например такой <mpl=default&login=admin&psw= В результате выполнения кода ответ в файл D:\rezult.txt |
|||
8
quest
28.06.12
✎
23:30
|
(4) уважаемый, вам не СП, вам букварь курить надо. на предмет умения читать. Если вы уверены что умеете читать то читать в сторону http://yandex.ru/yandsearch?text=1с++http+post+запрос&clid=1864632&lr=2 и вторая ссылка как ни странно все равно тыкнет носом в СП. из чего делавю вывод что у вас го все же подло выкрали под покровом ночи.... Что касается com - ну коли такой умный и хочешь застыдить - поправь тут v8: v8: Грамматика 1С. граматику.
Ну а я ушел писать кипятком :) |
|||
9
oleg_prg
28.06.12
✎
23:32
|
А этот пример складывает страницу в нужный каталог/файл. Правда пример на 1С7.7. но думаю разберешься
Адрес = "http://catalog.onliner.by/mobile/~add=0~sort_by=best~dir=asc~where=actual~currency=USD~city=minsk~page="+СокрЛП(Страница)+"/"; //Адрес = "http://content1.onliner.by/catalog/devices/apple_iphone4_16gb.jpg"; Если СсылкаФото <> "" Тогда Адрес = СсылкаФото; КонецЕсли; Состояние("Загрузка с WEB узла"); //Отправка стандартного запроса Попытка // создадим объект XMLHttpRequest олеХМЛ = СоздатьОбъект("Microsoft.XMLHTTP"); Исключение Сообщить("Ошибка создания Microsoft.XMLHTTP"); Возврат 0; КонецПопытки; // иницируем его типом запроса и нужным нам URL олеХМЛ.Open("GET", Адрес, 0); Попытка // отправим запрос для обработки серверу олеХМЛ.Send(); Исключение Сообщить("Ошибка доступа!!! SEND объекта Microsoft.XMLHTTP"); Возврат 0; КонецПопытки; Попытка // создадим "поток" через ADODDB для работы с данными олеАДО = СоздатьОбъект("ADODB.Stream"); Исключение Сообщить("Ошибка создания ADODB.Stream"); Возврат 0; КонецПопытки; // зададим тип и режим потока олеАДО.Mode = 3; олеАДО.Type = 1; // откроем его олеАДО.Open(); Попытка // создадим объект для управления скриптами олеШелл = СоздатьОбъект("MSScriptControl.ScriptControl"); Исключение Сообщить("Ошибка создания MSScriptControl.ScriptControl"); Возврат 0; КонецПопытки; // установим язык сценариев олеШелл.Language = "vbscript"; // добавим созданные объекты олеШелл.AddObject("oleADO", олеАДО); олеШелл.AddObject("oleXML", олеХМЛ); // с помощью скрипта запишем в поток ADO данные из // объекта XMLHttpRequest // то есть содержимое страницы олеШелл.Eval("oleADO.Write(oleXML.ResponseBody)"); // запишем данные во временный файл Если СсылкаФото = "" Тогда олеАДО.SaveToFile("D:\data.dd", 2); Иначе олеАДО.SaveToFile(ВыходФото, 2); КонецЕсли; // закроем данный поток олеАДО.Close(); Состояние("Получен!!!"); Возврат 1; |
|||
10
oleg_prg
28.06.12
✎
23:35
|
Еще пример работы через OLE IExplore для складывания страниц в папку/файл
Процедура ВзятьСтраницуСписокКомпаний(НомСтраницы) ИЕ=СоздатьОбъект("InternetExplorer.Application"); ИЕ.Visible=0; НомерКомпании = 0; Адрес1 = Адрес; Адрес1 = СтрЗаменить(Адрес,"=1&h=","="+СокрЛП(НомСтраницы)+"&h="); ИЕ.Navigate(Адрес1); Пока ИЕ.ReadyState<4 Цикл КонецЦикла; ЕстьЗапросКода = 0; Док=ИЕ.document; Ячеечки=Док.getElementsByTagName("div"); Для к=0 по Ячеечки.length-1 Цикл Если Найти(Ячеечки.item(к).innerHTML,"необходимо ввести код") > 0 Тогда ЕстьЗапросКода = 1; КонецЕсли; КонецЦикла; Если ЕстьЗапросКода = 1 Тогда ИЕ.Visible=1; Код = ""; ВвестиСтроку(Код,"Введите код","10"); ИЕ.Document.Forms(0).elements("cc").Value=СокрЛП(код); ИЕ.Document.Forms(0).submit(); КонецЕсли; Док=ИЕ.document; Ячеечки=Док.getElementsByTagName("td"); Для к=0 по Ячеечки.length-1 Цикл НомерКомпании = НомерКомпании + 1; НПП = НПП + 1; Т.НоваяСтрока(); Сообщить(Ячеечки.item(к).innerHTML); к = к+1; Т.Наименование = Сред(Ячеечки.item(к).innerHTML,Найти(Ячеечки.item(к).innerHTML,">")+1,100); Т.Наименование = СтрЗаменить(Т.Наименование,"</A>",""); к = к+1; Т.Адрес = Ячеечки.item(к).innerHTML; к = к+1; Т.ОГРН = Ячеечки.item(к).innerHTML; к = к+1; Т.ДатаЗаписи = Ячеечки.item(к).innerHTML; к = к+1; Т.ИНН = Ячеечки.item(к).innerHTML; //ВзятьКомпанию(Адрес, НомерКомпании); Т.НПП = НПП; Состояние(НПП); КонецЦикла; ИЕ.Quit(); КонецПроцедуры |
|||
11
oleg_prg
28.06.12
✎
23:38
|
Но хочу предупредить что через работу
HTTP=Новый HTTPСоединение(СерверИсточник,,,,ПроксиСервер); HTTP.ОтправитьДляОбработки("D:\post.txt","/accounts/Login", "D:\rezult.txt", Заголовки); заголовок ответа получить не получится. Это плохо в том случае если происходит Redirect т.е. отправляете запрос например mail.ru а в ответ получаете http://e.mail.ru/cgi-bin/msglist в этом случае вы останетесь на адресе mail.ru и не узнаете ч-з заголовок ответа что надо открыть на http://e.mail.ru/cgi-bin/msglist |
|||
12
oleg_prg
28.06.12
✎
23:42
|
(10) в примере вот в этом месте
Если ЕстьЗапросКода = 1 Тогда ИЕ.Visible=1; Код = ""; ВвестиСтроку(Код,"Введите код","10"); ИЕ.Document.Forms(0).elements("cc").Value=СокрЛП(код); //<<<здесь ИЕ.Document.Forms(0).submit(); КонецЕсли; видно как заполнять поле которое на WEB странице вообще стандартные методы 1С могут работать с WEB мягко говоря неочень хорошо, лучше использовать OLE, конечно если не интересеут кроссплатформенность, ну и OLE не всегда доступны на сервере из-за соображений безопасности |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |