Имя: Пароль:
1C
1С v8
1С и сайты
0 SitiyDenis
 
14.03.16
17:38
Добрый день.

Есть сайт с формой логина и пароля, можно ли из 1С попасть на сайт залогиниться (ввести пароль, логин и нажать кнопку). Далее разобрать страницу и показать ее в 1с? (все это делать программно)

Есть у кого-то статьи, ссылки или обработки? С чего начать?
1 mikecool
 
14.03.16
17:49
2 Карупян
 
14.03.16
18:01
(1) можно и без этого всего
3 Serginio1
 
14.03.16
18:16
(2) Можно, но с 1 значительно проще
4 Карупян
 
14.03.16
18:20
(3) я бы не сказал
5 Serginio1
 
14.03.16
18:21
Давай меряться. Я привожу свой вариант ты свой.
6 Serginio1
 
14.03.16
18:22
В статье есть пример отправки пост запроса с полем валидатором
http://catalog.mista.ru/public/466196/
7 Serginio1
 
14.03.16
18:23
Клиент = Врап.СоздатьОбъект(HttpClient);
    Клиент.BaseAddress = Врап.СоздатьОбъект("System.Uri",WebsiteUrl);
    // Стоит отметить, что по умолчанию  HttpClient использует Cookie
    //Загрузим основную страницу
    res = Клиент.GetStringAsync("").Result;
    document = parser.Parse(res);
    // Найдем адрес страницы для авторизации
    
    Аннотация= document.QuerySelector("a.log-in");
    //Полный относительный путь Аннотация.PathName+Аннотация.Search
    // Но в данном случае Аннотация.Search просто нет
    // Если использовать BrowsingContext то полный путь содержится в Href

    res= Клиент.GetStringAsync(Аннотация.PathName).Result;
     document = parser.Parse(res);
    // Найдем  элемент form для авторизации
    //В которой есть поле для верификации __RequestVerificationToken
     Форма=document.QuerySelector("form");
     Сообщить(Форма.Method);
     d = Врап.СоздатьОбъект(Dictionary);
    
    Для каждого Элемент Из Форма.Elements  Цикл
        Элем=Врап.ПолучитьИнтерфейс(Элемент,"IHtmlInputElement");
        //Нужны только Input элементы
        //Выберем все элементы Input
        // и запишем их имена и значения в словарь
        Если Элем<> Неопределено Тогда
            d.Add(Элем.Name, Элем.Value);
            Сообщить(Элем.Name+"="+Элем.Value);
            
        КонецЕсли;
        
        
    КонецЦикла;    
    
    
            d.set_Item("User", "User");
            d.set_Item("Password", "secret");
            
            Контент=Врап.СоздатьОбъект(FormUrlEncodedContent,d);
        // Отправим пост запрос с данными формы    по адресу находящемся в Action
        резулт=Клиент.PostAsync(Форма.Action,Контент).Result;
        
        // И получим ответ
        res=резулт.Content.ReadAsStringAsync().Result;
        document = parser.Parse(res);

    // Найдем на этой странице ссылку на секретную страницу
     Аннотация= document.QuerySelector("a.secret-link");
     res= Клиент.GetStringAsync(Аннотация.PathName).Result;
      document = parser.Parse(res);
      // Получим из первого параграфа искомое значение
      Сообщить(document.QuerySelector("p").TextContent)
8 Карупян
 
14.03.16
18:44
(5) Пример парса конкретного сайта или пример неведомой универсальной фигни?
9 Serginio1
 
14.03.16
22:52
(8) Пример конкретного тестого сайта. Но подход универсален. Поддержка куков автоматическая.
Вот другой пример конкретного сайта
.Net в 1С. Парсинг сайтов, multipart/form-data, gzip итд
10 Serginio1
 
14.03.16
23:02
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.