1. mars207 27 18.07.19 09:33 Сейчас в теме

Обмен с сайтом. Авторизация по токену Bearer

Всем доброго времени суток!

Есть задача получить продажи с сайта. У сайта есть api к которому можно обратиться. Но сайт использует curl авторизацию с токеном. Токен есть и он статический.
Api сайта работает, проверил с помощью программы Postman. Но при попытке получить данные в 1С я получаю ответ 400 Bad Request.
Может кто-то подскажет что делаю не так? Были ли у кого-то подобные реализации?

Пример запроса что дали разработчики сайта:

curl -k -H"Authorization: Bearer qeydxk7sktul1o776chzzkabdfl7cnuh8ffinor7xqm2kjrbsrfvauvwzbi2­7nwz " https://my.vendotek.com/api/v1/unit

/////////////
Пример моего кода:

Соединение = Новый HTTPСоединение(
	IPАдрес, // сервер (хост)
	443, // порт, по умолчанию для http используется 80, для https 443
	логин, // пользователь для доступа к серверу (если он есть)
	пароль, // пароль для доступа к серверу (если он есть)
	, // здесь указывается прокси, если он есть
	, // таймаут в секундах, 0 или пусто - не устанавливать
	// защищенное соединение, если используется https
	);
	
	
	ЗаголовокЗапросаHTTP = Новый Соответствие();  
	ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json");
	ЗаголовокЗапросаHTTP.Вставить("Authorization", Токен);

Запрос = Новый HTTPЗапрос("https://my.vendotek.com/api/v1/unit", ЗаголовокЗапросаHTTP);
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос);
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Показать
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Найденные решения
7. login1020 43 18.07.19 10:01 Сейчас в теме +2 $m
Соединение = Новый HTTPСоединение(
IPАдрес, // сервер (хост)
443, // порт, по умолчанию для http используется 80, для https 443
логин, // пользователь для доступа к серверу (если он есть)
пароль, // пароль для доступа к серверу (если он есть)
, // здесь указывается прокси, если он есть
, // таймаут в секундах, 0 или пусто - не устанавливать
// защищенное соединение, если используется https
);

Вы явно указываете, что используется защищенной соединение?

Пример:
SSL = Новый ЗащищенноеСоединениеOpenSSL();
Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);
Остальные ответы
Избранное Подписка Сортировка: Древо
2. spacecraft 18.07.19 09:42 Сейчас в теме
(1) обычно Токен приходит в виде "qeydxk7sktul1o776chzzkabdfl7cnuh8ffinor7xqm2kjrbsrfvauvwzbi­27nwz". Т.е. слово Bearer в нем нет. Для авторизации по токену нужно добавить это слово самим.
ЗаголовокЗапросаHTTP.Вставить("Authorization", "Bearer "+Токен);
3. mars207 27 18.07.19 09:50 Сейчас в теме
(2)Я пробовал этот вариант. Результат тот же.
4. login1020 43 18.07.19 09:51 Сейчас в теме
(3) а мне кажется что проблема в этом
The plain HTTP request was sent to HTTPS port
5. spacecraft 18.07.19 09:54 Сейчас в теме
(3) тогда показывайте код Новый HTTPСоединение. данные можете подставить левые.
Токен уже есть и его получать не нужно?
Тогда логи и пароль указывать в соединении не нужно.
Ну да, и доступ требуется по защищенному соединению.
6. spacecraft 18.07.19 10:00 Сейчас в теме
(1)
Запрос = Новый HTTPЗапрос("https://my.vendotek.com/api/v1/unit", ЗаголовокЗапросаHTTP);

Вот тут тоже не верно.
Что-то в этом роде:
Соединение = Новый HTTPСоединение("my.vendotek.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗаголовокЗапросаHTTP = Новый Соответствие(); 
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json"); 
ЗаголовокЗапросаHTTP.Вставить("Authorization", "Bearer "+Токен); 

Запрос = Новый HTTPЗапрос("api/v1/unit", ЗаголовокЗапросаHTTP); 
HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос); 
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
login1020; +1 Ответить
8. login1020 43 18.07.19 10:02 Сейчас в теме
10. spacecraft 18.07.19 10:06 Сейчас в теме
(1) в дополнение к (6):
Вы точно post запрос хотите отправить, а не get?
Вроде как get в примере.
Тогда вместо HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос);
нужно:
HTTPОтвет = Соединение.Получить(Запрос);
7. login1020 43 18.07.19 10:01 Сейчас в теме +2 $m
Соединение = Новый HTTPСоединение(
IPАдрес, // сервер (хост)
443, // порт, по умолчанию для http используется 80, для https 443
логин, // пользователь для доступа к серверу (если он есть)
пароль, // пароль для доступа к серверу (если он есть)
, // здесь указывается прокси, если он есть
, // таймаут в секундах, 0 или пусто - не устанавливать
// защищенное соединение, если используется https
);

Вы явно указываете, что используется защищенной соединение?

Пример:
SSL = Новый ЗащищенноеСоединениеOpenSSL();
Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);
9. mars207 27 18.07.19 10:05 Сейчас в теме
(7)Не указывал. Сейчас получил "Unauthorized.". Копаю дальше
11. mars207 27 18.07.19 10:17 Сейчас в теме
Благодарю за советы. Все получилось. Правильный код ниже:

Соединение = Новый HTTPСоединение(
	IPАдрес, // сервер (хост)
	443, // порт, по умолчанию для http используется 80, для https 443
	Логин, // пользователь для доступа к серверу (если он есть)
	пароль, // пароль для доступа к серверу (если он есть)
	, // здесь указывается прокси, если он есть
	, // таймаут в секундах, 0 или пусто - не устанавливать
	Новый ЗащищенноеСоединениеOpenSSL()// защищенное соединение, если используется https
	);
		
	ЗаголовокЗапросаHTTP = Новый Соответствие();  
	ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json");
	ЗаголовокЗапросаHTTP.Вставить("Authorization", "Bearer " +Токен);
	
	Запрос = Новый HTTPЗапрос("/api/v1/unit", ЗаголовокЗапросаHTTP);
	HTTPОтвет = Соединение.Получить(Запрос);
	ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Показать
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Тюмень
зарплата от 65 000 руб.
Полный день

Консультант 1С (Бухгалтерия)
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Консультант 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день