Имя: Пароль:
1C
1С v8
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 пост запрос например такой &ltmpl=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 не всегда доступны на сервере из-за соображений безопасности