Имя: Пароль:
1C
1С v8
HTTP получение токена для API
0 bagu_muslim
 
24.04.21
13:18
Доброго времени суток коллеги пробую получить токен через http соединение , в теле запроса передаю логин и пароль , логин и пароль принимается но в ответ приходит код 401 и сообщение что такого активного пользователя нет. Через Postman все проходит без проблем , у кого какие идеи будут?
        
        SSL=Новый ЗащищенноеСоединениеOpenSSL;
    Соединение = Новый HTTPСоединение(Объект.Адрес,,,,,,SSL);
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    Запрос = Новый HTTPЗапрос("/en/api/v1/login/",ЗаголовокHTTP);
    Запрос.УстановитьТелоИзСтроки("&phone_number="+Объект.логин+"&password="+Объект.пароль,КодировкаТекста.UTF8);
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку();
    Сообщить(ОтветВВидеСтроки);
    Сообщить(Ответ.КодСостояния);
1 Kassern
 
24.04.21
13:26
(0) чет бред какой-то. А точно POST запрос нужен? Ты ж в теле ничего кроме пары параметров не передаешь.
2 Kassern
 
24.04.21
13:27
(0) вангую, что нужно обычный гет запрос Объект.Адрес+"/en/api/v1/login/"+&phone_number="+Объект.логин+"&password="+Объект.пароль. Что в APIшке сказано?
3 bagu_muslim
 
24.04.21
13:33
(2) Не особо опытен в данном вопросе , но вот адрес API https://stubla.com/en/api/v1/login/
4 acht
 
24.04.21
13:35
(0) BOM из тела убери
5 bagu_muslim
 
24.04.21
13:36
(4) Пробовал задать параметр "не использовать" результат тот же
6 acht
 
24.04.21
13:39
(5) и первый амперсенд из строки параметров убери
7 Kassern
 
24.04.21
13:40
(5) Попробуй поменять заголовок на application/json и передавать в теле:
{
    "phone_number": ТвойНомер,
    "password": ТвойПароль
}
8 bagu_muslim
 
24.04.21
13:46
(7) код ошибки 400 текст {"detail":"JSON parse error - Expecting value: line 1 column 23 (char 22)"}
9 bagu_muslim
 
24.04.21
13:47
(7) Извиняюсь за туповатый вопрос а в json файле передать в тело или тип строка пойдет?
10 Kassern
 
24.04.21
13:55
(9)
        ЗаписьJSON=Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписьJSON.ЗаписатьНачалоОбъекта();
        ЗаписьJSON.ЗаписатьИмяСвойства("phone_number");
    ЗаписьJSON.ЗаписатьЗначение(ТвойНомер);
    ЗаписьJSON.ЗаписатьИмяСвойства("password");
        ЗаписьJSON.ЗаписатьЗначение(ТвойПароль);
        ЗаписьJSON.ЗаписатьКонецОбъекта();
        Результат=ЗаписьJSON.Закрыть();
    Запрос.УстановитьТелоИзСтроки(Результат);
11 bagu_muslim
 
24.04.21
13:58
(10) Вы просто гений , спасибо большое . Заработало!!! Целый день мучался, теперь буду знать .
12 Kassern
 
24.04.21
13:59
(10) по красивому лучше конечно структуру заполнять, а потом через ЗаписатьJSON передать ее. Тогда меньше кода будет и выглядеть красивее.
13 bagu_muslim
 
25.04.21
03:21
(12) Гуру Kassern еще один вопрос по поводу HTML пытаюсь отправить файл и вылетает следующая ошибка ошибка  " {"detail":"JSON parse error - Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)"}" код ошибки 400 Код приведен ниже.

        SSL=Новый ЗащищенноеСоединениеOpenSSL;
    Соединение = Новый HTTPСоединение(Объект.Адрес,,,,,,SSL);
    ЗаголовокHTTP = Новый Соответствие();
    //Заголовки.Вставить("Host",Объект.Адрес);
    ЗаголовокHTTP.Вставить("Content-Type", "application/json;charset=utf-8"); // пробовал менять контент тайп там еще гуще ошибки вылетают
    ЗаголовокHTTP.Вставить("Authorization","Bearer   "+Токен);
    хмл=ПолучитьФайлXML();
    хмл=СформироватьXML(хмл);
    HTTPЗапрос = Новый HTTPЗапрос("/en/api/v1/shops/update-products-*****/",ЗаголовокHTTP);
    HTTPЗапрос.УстановитьИмяФайлаТела(хмл);
    HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
    ОтветВВидеСтроки = HTTPОтвет.ПолучитьТелоКакСтроку();
    Сообщить(HTTPОтвет.КодСостояния);
    Сообщить(ОтветВВидеСтроки);
14 bagu_muslim
 
25.04.21
03:27
(13) Кстати и также принципиально отправлять туда файл xml.