Имя: Пароль:
1C
1С v8
Авторизация с помощью POST в HTTPСоединение
0 simol
 
18.08.15
13:09
Подскажите пожалуйста
Есть описание http://api.brain.com.ua/help/auth

POST это ОтправитьДляОбработки(). В СП у ОтправитьДляОбработки указано два параетра. Первый HTTPЗапрос, второй ИмяВыходногоФайла. Там же в примере ОтправитьДляОбработки() используется с тремя параметрами (ИмяОтпарвляемогоФайла, РесурсНаСервере, ИмяВыходногоФайла).

Мне же нужно передать не файл, а два параметра логин и пароль.
Куда мне их поместить?
1 simol
 
18.08.15
13:12
На PHP это вот так

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('login'=>'your_login', 'password'=>'your_password'));
(или curl_setopt($ch, CURLOPT_POSTFIELDS, 'login=your_login&password=your_password'); )
curl_setopt($ch, CURLOPT_URL, 'http://api.brain.com.ua/auth ');
$response = curl_exec($ch);
$response = json_decode($response);
if ($response['status'] == 1) $SID = $response['result'];
else throw new Exception('Can not login.');


Где в нашем HTTPСоединение или HTTPЗапрос мифическое "CURLOPT_POSTFIELDS"?
2 simol
 
18.08.15
13:28
Сделал так

    Соединение = Новый HTTPСоединение("api.brain.com.ua");
    Запрос = Новый HTTPЗапрос("http://api.brain.com.ua/auth/";);
    Запрос.УстановитьТелоИзСтроки("login=your_login&password=your_password");
    
    ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
    Ответ = Соединение.ОтправитьДляОбработки(Запрос, ИмяВыходногоФайла);


Такк верно?
3 Про100Филя
 
18.08.15
13:29
(0) в РесурсНаСервере = "/auth?login=qweqwe&password=12345"
4 simol
 
18.08.15
13:30
(3)Это не для GET?
5 Про100Филя
 
18.08.15
13:35
(4) да это get... попробуй так

ФайлЗапроса = ПолучитьИмяВременногоФайла();
ТекстовыйФайл = Новый ТекстовыйДокумент;
    ТекстовыйФайл.УстановитьТекст("login=qweqwe&password=12345");
    ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);
ИмяОтпарвляемогоФайла = ФайлЗапроса;
6 simol
 
18.08.15
13:41
Пробовал так

    Соединение = Новый HTTPСоединение("api.brain.com.ua");
    Запрос = Новый HTTPЗапрос("http://api.brain.com.ua/auth";);
    Запрос.УстановитьТелоИзСтроки("login=your_login&password=your_password");
    ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
    Ответ = Соединение.ОтправитьДляОбработки(Запрос, ИмяВыходногоФайла);



    Соединение = Новый HTTPСоединение("api.brain.com.ua");
    Запрос = Новый HTTPЗапрос("http://api.brain.com.ua/auth?login=your_login&password=your_password";);
    ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
    Ответ = Соединение.ОтправитьДляОбработки(Запрос, ИмяВыходногоФайла);



    ИмяВременногофайла = ПолучитьИмяВременногоФайла("txt");
    ТекстовыйФайл = Новый ТекстовыйДокумент;
    ТекстовыйФайл.ДобавитьСтроку("login=your_login&password=your_password");
    ТекстовыйФайл.Записать(ИмяВременногофайла);
    
    Соединение = Новый HTTPСоединение("api.brain.com.ua");
    Запрос = Новый HTTPЗапрос("http://api.brain.com.ua/auth";);
    Запрос.УстановитьИмяФайлаТела(ИмяВременногофайла);
    ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
    Ответ = Соединение.ОтправитьДляОбработки(Запрос, ИмяВыходногоФайла);


ответ 404 ошибка все время
7 Анютик
 
18.08.15
13:43
я на днях подобную тему поднимала, авторизацию прошла
8 Анютик
 
18.08.15
13:43
9 Леха Дум
 
18.08.15
13:55
а пароль захешировали? На сайте про него написано:
"пароль пользователя захешированный MD5 функцией"
10 simol
 
18.08.15
14:00
(9) Пока нет логина и пароля. Пока стабильно ошибка 404 с надуманными логинами и паролем.
(8) Спасибо, вдохновила на еще один вариант, может и тебе код твоего POST запроса сократит. Не надо файл создавать.


    Соединение = Новый HTTPСоединение(СерверБрейна());
    Запрос = Новый HTTPЗапрос("/auth");
    Запрос.УстановитьТелоИзСтроки("login=your_login&password=your_password");
    ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
    Ответ = Соединение.ОтправитьДляОбработки(Запрос, ИмяВыходногоФайла);


Вот так нет ошибки 404. Вот тут Новый HTTPЗапрос("/auth") нужно было не полный адрес, а то, что после имени домена.
11 simol
 
18.08.15
14:04
Вместо псоледних двух строк можно:

    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    ОтветТекстом = Ответ.ПолучитьТелоКакСтроку();
12 Анютик
 
18.08.15
14:05
(10) спасибо. у меня другая проблема, почему-то меня сайт логинит и сразу забывает...
13 Анютик
 
18.08.15
14:05
(11) ага,так удобнее отлаживать
14 simol
 
18.08.15
14:06
(12) В моем случае возвращается номер сессии ,который нужно использовать при последующих обращениях
15 Анютик
 
18.08.15
14:07
(14) а как это посмотреть?
16 Анютик
 
18.08.15
14:08
(14) или про куки речь?
17 simol
 
18.08.15
14:10
(16) В описании обмена.
У меня написано
Метод возвращает идентификатор сессии (SID), который необходим для реализации последующих запросов

Наверно у тебя чтото подобное в куках
18 Анютик
 
18.08.15
14:11
(17) у меня нет описания:( у меня есть чудо-система. да, мне тоже разработчик говорит, что в куках. но куки какие-то каки оказываются) или все несколько иначе, чем мы предполагаем:)))
19 Serginio1
 
18.08.15
14:16
(18) Смотри фиддлером и сохраняй куки
20 Serginio1
 
18.08.15
14:19
21 Анютик
 
18.08.15
14:22
(20) У  меня куки сохраняются, выдается один раз и не меняется, но почему-то после удачного захода на логин и рефреш, когда идешь на корень возвращает запрос авторизации
22 Анютик
 
18.08.15
14:24
за ссылку спасибо, я ее видела...уже почти все, что более-менее актуальное нашла - изучила...а может такое быть, что, например, браузеру куки каждый раз разные выдаются, а 1С только один раз? хотя я и браузером представлялась...
23 Serginio1
 
18.08.15
14:24
Так возьми в руки фиддлер и смортри что передается.
24 Анютик
 
18.08.15
14:25
(23) да мне только в голову вот пришло...сейчас проверим
25 Гёдза
 
18.08.15
14:28
BOM  в утф скорее всего виноват
26 Анютик
 
18.08.15
14:32
(25) а по-русски для блонидинок?
27 Гёдза
 
18.08.15
14:33
(26) гугли
28 Анютик
 
18.08.15
14:34
(27) в смысле я куки в неправильной кодировке передаю?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший