Имя: Пароль:
1C
 
Авторизация через Токен для HTTP запроса
0 masi
 
18.04.24
12:47
Ранее работали без токена и отправляли xml файл из 1с с помощью post запроса:

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
        Новый СертификатКлиентаWindows(),
        Новый СертификатыУдостоверяющихЦентровWindows());            
HTTP = Новый HTTPСоединение(Сервер, , , , , , ssl1);
HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);

сейчас клиент написал, что будет использовать токен, и прислал строковое значение, подскажите как можно передать токен в http соединении?
1 Dzenn
 
18.04.24
12:54
токен обычно ставится в заголовок в формате
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBEb2UiLCJhZG1pbiI6dHJ1ZSwiaWF0IjoxNTE2MjM5MDIyfQ.SdUMMAsFFk83SHyqGjfQ1pt8v_8t4WZku5Ty3CLMaH4
2 Dzenn
 
18.04.24
12:55
короче есть запрос, у запроса есть заголовок вида соответствие ключзначение, просто вставляешь конструкцию вида

Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
3 masi
 
18.04.24
13:19
Спасибо за ответ, т.е. вот так должно сработать?

сервер = "https://riester-lk.grphn-dev.ru/json/order/bill/";
ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(),
    Новый СертификатыУдостоверяющихЦентровWindows());    
HTTP = Новый HTTPСоединение(Сервер, , , , , , ssl1);

    ЗаголовокHTTP = Новый Соответствие();    
    ЗаголовокHTTP.Вставить("Accept-Language", "ru");

ЗаголовокHTTP.Вставить("Authorization", "Bearer"+"IUH36POKWED8748WED5YHNU74JYU8WED57");
    
    
    HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP);

у меня вызывает ошибку   Couldn't resolve host name
4 arsik
 
18.04.24
13:35
Couldn't resolve host name - и при чем тут токен? Переводчики есть в зале? Нужно перевести на нубский.
5 Garykom
 
18.04.24
13:36
сервер = "https://riester-lk.grphn-dev.ru/json/order/bill/";

хотя бы СП открой для
Новый HTTPСоединение(
6 Garykom
 
18.04.24
13:37
(0)
Ранее работали без токена и отправляли xml файл из 1с с помощью post запроса:

судя по "Couldn't resolve host name"
кто то пи*т
7 Garykom
 
18.04.24
13:38
ну и выкладывать токен в паблик это гм
да еще с адресом полным
8 masi
 
18.04.24
13:54
Спасибо за ответы, это тестовая среда, отделена от рабочей, поэтому вряд ли там кто-то что-то может украсть или испортить, но спасибо за предупреждение.
9 Мультук
 
18.04.24
13:59
(0)

Все хорошее уже написано за нас (с)

https://github.com/vbondarevsky/Connector
10 Garykom
 
18.04.24
14:06
(9) Там не все HTTP ответы есть
11 masi
 
18.04.24
14:29
хотя бы СП открой для
Новый HTTPСоединение(

можете расшифровать, что тут имеется в виду? СП открой...
12 Garykom
 
18.04.24
14:31
(11) хотя бы правила форума почитай, ссылка внизу "Правила", там "Словарик:"
https://mista.ru/help/rules.html
13 masi
 
18.04.24
15:06
Спасибо, посмотрю в синтаксис помощнике
14 ttk
 
18.04.24
15:30
(3)
1. сервер у тебя должен быть= "riester-lk.grphn-dev.ru"
2. между "Bearer" и токеном пробел ставят
15 masi
 
22.04.24
10:26
Всем большое спасибо за ответы

вот такой код отправки запроса получился, и сейчас заголовки запроса доходят до сервера и ответ 200, а тело запроса не приходит...


    сервер = "riester-lk.grphn-dev.ru/order/account/";
    АдресСтраницы = "index.php";
    
    ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
    Новый СертификатКлиентаWindows(),
    Новый СертификатыУдостоверяющихЦентровWindows());    
    
    ЗаголовокHTTP = Новый Соответствие();    
    ЗаголовокHTTP.Вставить("Accept-Language", "ru");
    ЗаголовокHTTP.Вставить("Accept-Charset", "utf-8");
    ЗаголовокHTTP.Вставить("Content-Language", "ru");
    ЗаголовокHTTP.Вставить("Content-Charset", "utf-8");
    
    ЗаголовокHTTP.Вставить("Authorization", "IUH....");
    ЗаголовокHTTP.Вставить("order-id", СокрЛ(ДокЗаказ.МПА_IdЗаказа));
    ЗаголовокHTTP.Вставить("token", "IUH...");

    ЗаголовокHTTP.Вставить("Cache-Control", "no-cache");
    ЗаголовокHTTP.Вставить("Postman-Token", "97f18a65-78fa-46c0-8588-f1b650b2571b");
    ЗаголовокHTTP.Вставить("Host", "riester-lk.grphn-dev.ru");  
    ЗаголовокHTTP.Вставить("Vary", "HTTPS");
    ЗаголовокHTTP.Вставить("P3P", "policyref=/bitrix/p3p.xml, CP=NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA");

    ЗаголовокHTTP.Вставить("Accept-Encoding", "gzip, deflate, br");
    ЗаголовокHTTP.Вставить("Connection", "keep-alive");
    ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=--------------------------427694581768594079778688");    
    
    ЗаголовокHTTP.Вставить("Content-Length", "56");
    
    HTTP = Новый HTTPСоединение(Сервер, , , , , , ssl1);  
    //отправка запроса
    ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницы, ЗаголовокHTTP);    
    
    ТелоPOSTЗапроса = "" +Символы.ПС;    
    ТелоPOSTЗапроса = "token: ""IUH3...""" +Символы.ПС;
    ТелоPOSTЗапроса = ТелоPOSTЗапроса+"order-id: ""147""";     
    
    ЗапросHTTP.УстановитьТелоИзСтроки(ТелоPOSTЗапроса, КодировкаТекста.ANSI);
ЗапросHTTP.УстановитьИмяФайлаТела(ИмяФайлаОтправки);  
    
    ОтветHTTP = HTTP.ОтправитьДляОбработки(ЗапросHTTP, файлрезультата);
    Сообщить("Ответ post запроса "+ОтветHTTP.КодСостояния);
16 Мультук
 
22.04.24
10:34
(15)

1) Сокращу ваш код до:

сервер = "riester-lk.grphn-dev.ru/order/account/";
HTTP = Новый HTTPСоединение(Сервер, , , , , , ssl1);  

Либо в HTTPСоединение что-то поменялось, и оно согласно вместо "riester-lk.grphn-dev.ru" кушать указанную выше строку, либо...



2) А где Bearer ? Уже не нужен?
ЗаголовокHTTP.Вставить("Authorization", "IUH....");
17 masi
 
22.04.24
11:06
2) А где Bearer ? Уже не нужен?
ЗаголовокHTTP.Вставить("Authorization", "IUH....");

заметили, что срабатывает и с Bearer и без этого, т.е. причина того, что тело запроса не доходит(а заголовки доходят) не в способе передачи токена
18 arsik
 
22.04.24
11:42
сервер = "riester-lk.grphn-dev.ru";
АдресСтраницы = "/order/account/index.php";
19 masi
 
22.04.24
12:15
поменяли, не помогло((
20 arsik
 
22.04.24
12:36
(19) Я вижу, что у тебя в коде бардак. Не понимая тыкать во все бесполезно. Бери отладчик и го проверять