Имя: Пароль:
1C
1С v8
Помогите разобраться HTTPЗапрос/XMLHTTP/WinHttpRequest
0 Faust1976
 
16.10.14
18:17
Добрый день.
Коллеги, помогите разобраться «по принципу» как говориться
Решаю задачу скачивания каталогов товаров с сайта, на платформе 8.3.
На сайте требуется авторизация
Попробовал варианты
HTTPСоединение ,MSXML2.XMLHTTP ,WinHttp.WinHttpRequest.5.1
Проблемы которые возникла при HTTPСоединение  -  Во первых HTTPСоединение/ HTTPЗапрос как я понял отправляет строку юзер агента «1С Ent..» и не поддерживает авторизованное соединение (но могу заблуждаться) , а тек же не удалось отправить данные при заполнении формы  - авторизация не проходила :
HTTPЗапрос = Новый HTTPЗапрос;
HTTPЗапрос2.АдресРесурса = "/authentication.php";
HTTPЗапрос2.Заголовки.Вставить("Connection", "keep-alive");
лДанныеФормы = "email=email%40mail.ru&passwd=1&back=my-account.php&SubmitLogin=%D0%92%D1%85%D0%BE%D0%B4"
HTTPЗапрос2.УстановитьТелоИзСтроки(лДанныеФормы);
При этом конструкция
Запрос =  Новый COMОбъект("MSXML2.XMLHTTP");
Запрос.Open ("post", uRL, False);
Запрос.setRequestHeader ("Content - type", "application / x - www - form - urlencoded");
лДанныеФормы = "email=email%40mail.ru&passwd=1&back=my-account.php&SubmitLogin=%D0%92%D1%85%D0%BE%D0%B4"
Запрос.send(лДанныеФормы)
Но при этом  на некоторых сайтах валится на следующей же строке (с  аналогичной авторизацией)
Ответ = Запрос. responseText
Валится с ошибкой msxml3  …. Непознанная ошибка
В этом случае помогает
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2,"Windows-1251");
    WinHttp.Open("GET",strUrl,0);  
    ОтветСервера = WinHttp.ResponseText;
Ответ получаю и обрабатывается …
Итак Вопрос – В чем отличия этих трех методов и почему они так себя ведут.
Помогите разобраться по принципу …
1 romix
 
16.10.14
18:54
Можно смотреть что происходит в браузере и в 1С при помощи специальной программы.

Хорошая прога для просмотра траффика - Fiddler.
2 Faust1976
 
16.10.14
19:49
А чем Fiddler тут поможет ???
С помощью него я и выяснил что 1С отправляет строку агента "1С ent .."
3 Адинэснег
 
16.10.14
20:25
юзер агент тоже в хидере можно указать
раз авторизация - значит в куки токен сессии должен храниться, куки передаются также в хидере
4 Маленький Вопросик
 
16.10.14
20:44
(0) как можно скачать товары с сайта, есть их нужно по-умолчанию закрывать?
5 Faust1976
 
16.10.14
20:54
3. MSXML2.XMLHTTP - в моем случае сессию удерживал, значит куки сохранялись и в рамках поднятого соединения передавались ...  Явно описывать не нужно было
Но главное одна и та же строка данных формы в случае 1С HTTPЗапрос  не срабатывала, а в случае MSXML2.XMLHTTP глотается на уга.
4. Отвечу, зотя думаю чтобы не поняли задачи - Задача парсинга каталогов товаров на сайте -результат работы - таблица с колонками товар,цена,фото