Имя: Пароль:
1C
1С v8
HTTP запрос
,
0 BubbleGumm
 
28.11.16
00:31
Как преобразовать следующий вызов в код 1с:
curl -c cookie.txt -d "AuthPhase=1&AUTH_USER=ВАШ_ЛОГИН&AUTH_PW=ВАШ_ПАРОЛЬ" http://b2b.resurs-media.ru/netcat/modules/auth/

пробую вот так

    Соединение = Новый HTTPСоединение("b2b.resurs-media.ru", ,"пользователь", "пароль");
    
    Заголовки = Новый Соответствие;         
    Заголовки.Вставить("AuthPhase", 1);
    Заголовки.Вставить("AUTH_USER", "пользователь");
    Заголовки.Вставить("AUTH_PW", "пароль");
    
    HTTPЗапрос = Новый HTTPЗапрос("/netcat/modules/auth/", Заголовки);
    
    
    ВремКаталог = ПолучитьИмяВременногоФайла();
    СоздатьКаталог(ВремКаталог);
    ИмяФайла = ВремКаталог + "\temp.htm";
    
    HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос, ИмяФайла);

получаю в ответе страницу авторизации, что здесь не так?
1 Mauser
 
28.11.16
00:42
Все не так. Надо открыть слева описание командной строки curl, справа - синтаксис помощник 1С, внимательно прочитать и не запихивать в заголовок все непонятное тебе.
2 Сергиус
 
28.11.16
00:55
(0)Параметры пиши в файл в виде строки AuthPhase=1&AUTH_USER=ВАШ_ЛОГИН&AUTH_PW=ВАШ_ПАРОЛЬ, из заголовков убери.
3 BubbleGumm
 
28.11.16
00:58
(2) Ага, спсибо, а как файл на сервер передать?
4 BubbleGumm
 
28.11.16
01:20
Пробую HTTPЗапрос.УстановитьТелоИзСтроки(AuthPhase=1&AUTH_USER=ВАШ_ЛОГИН&AUTH_PW=ВАШ_ПАРОЛЬ);

и

HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайла), предварительно записав в файл, один черт возвращает страницу авторизации.
5 3kbgz
 
28.11.16
01:41
(0) Попробуй "пользователь" и "пароль" писать без кавычек.
6 BubbleGumm
 
28.11.16
01:47
без кавычек пишу, не проходит.
7 3kbgz
 
28.11.16
02:06
(6) Соединение точно не защищенное?
8 BubbleGumm
 
28.11.16
02:09
нет, http://b2b.resurs-media.ru/

через curl авторизуется без проблем
9 Mauser
 
28.11.16
07:23
Документацию открывал или так и будешь в компании методом тыка сиську искать? Content-type Александр Сергеевич за тебя указывать будет?
10 Мимохожий Однако
 
28.11.16
07:33
Давно бы уж поиском по типовой конфигурации нашёл пример для = Новый HTTPЗапрос
11 Сергиус
 
28.11.16
09:49
(0)Там не все так просто.

Нужно делать 2 запроса! Первый запрос, GET, отправляешь на этот же адрес, в ответе будет заголовок Set-Cookie:sid=dk0k6p9j8r95rlargg61b9me51(это как пример, в твоем случае будет другой). И 2-й запрос уже делаешь POST, для него передаешь это значение уже в заголовке запроса. И плюс естественно данные POST.

AuthPhase:1
REQUESTED_FROM:/netcat/modules/auth/
REQUESTED_BY:GET
catalogue:1
sub:334
cc:202
AUTH_USER:
AUTH_PW:
submit:Авторизоваться
12 Сергиус
 
28.11.16
09:55
(4)
<<пробую <<HTTPЗапрос.УстановитьТелоИзСтроки(AuthPhase=1&AUTH_USER=В<<АШ_ЛОГИН&AUTH_PW=ВАШ_ПАРОЛЬ);

Соединение = Новый HTTPСоединение("b2b.resurs-media.ru");

ДанныеPOST = "AuthPhase=1&AUTH_USER="+Пользователь+"&AUTH_PW="+Пароль;

ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Cookie","sid=dk0k6p9j8r95rlargg61b9me51;");

Запрос = Новый HTTPЗапрос("/netcat/modules/auth/",ЗаголовокHTTP);
Запрос.УстановитьТелоИзСтроки(ДанныеPOST);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
13 Сергиус
 
28.11.16
09:56
+(12)Что-то в таком роде, естественно, как и писал в (11) sid нужно получать GET запросом предварительно. Но кстати попробуй, может и с этим прокатит.
14 BubbleGumm
 
28.11.16
13:42
(13) Нет, не получается к сожалению, второй запрос возвращает новый sid и страницу авторизации.
15 Serginio1
 
28.11.16
13:50
Используйте Fiddler
16 BubbleGumm
 
28.11.16
14:04
(15) Вникать в тему долго, проще curl использовать, но хотелось бы штатными средствами решить
17 Serginio1
 
28.11.16
14:07
(16) Фиддлер это инструмент для просмотра трафика http://www.telerik.com/fiddler
18 BubbleGumm
 
28.11.16
14:16
(17) Разбираться времени нет совсем.
19 oleg_km
 
28.11.16
14:37
(18) Нет времени - не разбирайся. Или рассчитываешь, что кто-то свое время готов потратить на решение твоей задачи? Прикольною
20 BubbleGumm
 
28.11.16
14:50
(19) Так проходи мимо, не трать свое время
21 Сергиус
 
28.11.16
18:12
(14)А ты мой сид пробовал, или получал новый GET-запросом?
22 BubbleGumm
 
28.11.16
18:13
(21) Новый GETом получил
23 Сергиус
 
28.11.16
18:43
(22)Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:212
Content-Type:application/x-www-form-urlencoded
Cookie:sid=r3tbf1k8tnj82meb3ofcatihm5; QUICK_BAR_CLOSED=-1; __utmt=1; __utma=156590568.937404543.1480347677.1480347677.1480347677.1; __utmb=156590568.1.10.1480347677; __utmc=156590568; __utmz=156590568.1480347677.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Host:b2b.resurs-media.ru
Origin:http://b2b.resurs-media.ru
Referer:http://b2b.resurs-media.ru/netcat/modules/auth/
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36

Попробуй и другие заголовки добавлять, такие как Host,Referer, ну и остальные, если не поможет
24 BubbleGumm
 
28.11.16
19:23
О, прошла авторизация.
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
Вот это вот надо было. Сверху там кто-то умничал при контент тайп, ну вот в этом дело, да.
25 Сергиус
 
28.11.16
19:26
(24)Ну вот так и подбираешь то, что нужно) Пользоваться можно фидлером или в хроме Инструменты разработчика.
26 Serginio1
 
29.11.16
10:09
(20) С фиддлером ты бы потратил значительно меньше времени.
27 oleg_km
 
29.11.16
12:41
(26) Да ну наф. толи дело сидеть раскрыв клюв и ждать когда туда бросят червяка
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.