Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

1С: Администрирование и интеграция

Войти
Регистрация
Восстановить пароль
 
tmac
4 / 4 / 0
Регистрация: 11.10.2015
Сообщений: 12
#1

1С Web 1C + asp net web api - 1С

27.12.2016, 22:11. Просмотров 625. Ответов 9
Метки нет (Все метки)

Парни, доброго времени суток.
извините, если моя тема где-то пересекается, но ничего толком нужного найти не смог.
у меня такой вопрос, я поднял asp net web api сервер, настроил авторизацию через токены. проверяю разного рода утилитками, типа postman, все работает. отправляю запросы, сервер возвращает ответы. общение идет в формате json.
я в 1С вообще ничего не понимаю, не подходы, не концепцию, не идею.
А мой коллега 1сник испытывает проблемы с составлением в 1с http запросов.
Можете для "чайника" подсказать или кинуть пример, как отправить с 1С POST запрос на получение токена, при этом в теле запроса необходимо передать такие параметры как grant_type, username, password
Буду очень признателен, потому что если мой 1С-ник не начнет общение с моей БД через http-запросы, то мне придется колхозить обмен через ФТП...
Спасибо всем за понимание.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2016, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 1С Web 1C + asp net web api (1С):

2 сервиса (WCF Web API и ASP.NET Web API) на одном хосте - C# WCF
Есть БД с юзерами Есть консольное приложение (OWIN selfhost) с контроллером ImportController : ApiController для выполнения POST запросов...

.NET 4.x Client ASP.NET MVC + Angular и Server side ASP.NET WEB.API - C# ASP.NET
Доброго времени суток! Не первый день бьюсь над задачей, не могу понять в чем причина. Хочу создать почти HelloWorld решение, для...

Аутентификация в Web Api и Asp.Net MVC 6 - C# MVC
Есть задача: Проект на ASP.NET MVC 6 и отдельно проект на Web Api. Нужно сделать аутентификацию. Только встает вопрос каким образом? В...

Посоветуйте пожалуйста литературу ASP.Net web API - C# ASP.NET
Здравствуйте! Мне нужно изучить технологию ASP.Net web API. Посоветуйте пожалуйста литературу или другие источники. Буду признателен за...

ASP.NET Web API, количество одновременных запросов - C# MVC
Всем привет! У меня вопрос касательно количества одновременно выполняемых запросов в Web API. Имеется простая модель: public...

Проектирование веб-службы asp.net web api - C# MVC
Как вы проектируете веб-службу?

9
Dethmontt
Модератор
Эксперт 1С
2523 / 2331 / 375
Регистрация: 10.03.2011
Сообщений: 8,179
Записей в блоге: 1
Завершенные тесты: 1
28.12.2016, 03:33 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
вот самый простой пример
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
&НаКлиенте
Процедура ВыполнитьЗапрос(Команда)
// Создаем новое HTTP соединение с указанием сервера
// Последний параметр отвечает за использование защищенного соединения
HTTP = Новый HTTPСоединение(ИмяСервера,,,,,Истина);
// Получим временный файл для передачи в теле POST запроса
ФайлТелаЗапроса = ПолучитьИмяВременногоФайла();
// Запишем в файл содержимое тела запроса (текст)
ТекстФайл = Новый ТекстовыйДокумент;
ТекстФайл.УстановитьТекст(ФайлТелаЗапроса);
ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);
// Получим размер данных для передачи в заголовок
ФайлНаОтправку = Новый Файл(ФайлТелаЗапроса);
РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер());
// Получим временный файл — тело ответа POST запроса
ФайлРезультат = ПолучитьИмяВременногоФайла();
// Заголовок создадим в виде соответствия
ЗаголовокЗапросаHTTP = Новый Соответствие();
// Передаем в заголовках размер и тип данных на отправку
ЗаголовокЗапросаHTTP.Вставить(«Content-Length», РазмерФайлаНаОтправку);
ЗаголовокЗапросаHTTP.Вставить(«Content-Type», «application/json; charset=utf-8»);
// Отсылаем POST запрос на обработку.
// СсылкаНаРесурс — ссылка на веб-сервер (страницу), к которой посылается POST запрос
HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультат, ЗаголовокЗапросаHTTP);
// Получим ответ
ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8);
СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
КонецПроцедуры
1
tmac
4 / 4 / 0
Регистрация: 11.10.2015
Сообщений: 12
28.12.2016, 09:14  [ТС] #3
боюсь спросить, а где в этом коде указывается метод запроса POST?
и
РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер());
почему формируем XML, если нужен json?
0
Dethmontt
Модератор
Эксперт 1С
2523 / 2331 / 375
Регистрация: 10.03.2011
Сообщений: 8,179
Записей в блоге: 1
Завершенные тесты: 1
28.12.2016, 10:52 #4
tmac, просто отдайте вашему 1С программисту )))

Добавлено через 12 секунд
и дайте ему тело запроса
1
tmac
4 / 4 / 0
Регистрация: 11.10.2015
Сообщений: 12
28.12.2016, 15:37  [ТС] #5
на всякий случай, выкладываю рабочий вариант, спасибо Dethmontt, за наводку!!!

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HTTP = Новый HTTPСоединение("server.com");
 ФайлТелаЗапроса = ПолучитьИмяВременногоФайла("txt");
 ТекстФайл = Новый ТекстовыйДокумент;
 ТекстФайл.УстановитьТекст("grant_type=password&username=user&password=123456");
 ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);
 ФайлНаОтправку = Новый Файл(ФайлТелаЗапроса);
 РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер());
 ФайлРезультат = ПолучитьИмяВременногоФайла();
 ЗаголовокЗапросаHTTP = Новый Соответствие();
 ЗаголовокЗапросаHTTP.Вставить("Content-Length", РазмерФайлаНаОтправку);
 ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json; charset=utf-8");
 HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, "/token", ФайлРезультат, ЗаголовокЗапросаHTTP);
 ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
 ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8);
 СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
 Сообщить(СтрокаОтветаСервера);
1
tmac
4 / 4 / 0
Регистрация: 11.10.2015
Сообщений: 12
30.12.2016, 00:30  [ТС] #6
продолжу исследование 1С
значит, прошлым POST запросом был получен токен типа Bearer, теперь GET запросом из 1С обращаемся за данными используя токен в заголовке запроса, код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HTTP = Новый HTTPСоединение("server.com",,,,,);
 ФайлТелаЗапроса = ПолучитьИмяВременногоФайла("txt");
 ТекстФайл = Новый ТекстовыйДокумент;
 ТекстФайл.УстановитьТекст("Authorization = ");
 ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);
 ФайлНаОтправку = Новый Файл(ФайлТелаЗапроса);
 РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер());
 ФайлРезультат = ПолучитьИмяВременногоФайла();
 ЗаголовокЗапросаHTTP = Новый Соответствие();
 ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json; charset=utf-8");
 ЗаголовокЗапросаHTTP.Вставить("Authorization", "Bearer 72QKoy..............5w6hKwyof9ey3a");
 ХТТПЗапрос = Новый HTTPЗапрос;
 ХТТПЗапрос.Заголовки = ЗаголовокЗапросаHTTP;
 ХТТПЗапрос.АдресРесурса = "/api/controller_name";
 HTTP.Получить(ХТТПЗапрос,ФайлРезультат);
 ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
 ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8);
 СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
 Сообщить(СтрокаОтветаСервера);
1
Dethmontt
Модератор
Эксперт 1С
2523 / 2331 / 375
Регистрация: 10.03.2011
Сообщений: 8,179
Записей в блоге: 1
Завершенные тесты: 1
30.12.2016, 10:16 #7
tmac, а какая у тебя платформа 1С? если 8.3 то в принципе можно обойтись и без текстового файла
0
tmac
4 / 4 / 0
Регистрация: 11.10.2015
Сообщений: 12
30.12.2016, 10:29  [ТС] #8
У нас установлена 8.3.7 платформа.
насчет текстовых файлов ничего не могу сказать, так как я в 1С полный ноль. по http-запросам уже много чего нового рассказал своему 1С-нику))) про тело запроса, про заголовки, json сериализация)))
в последнем Get-запросе, действительно можно обойтись без файлика, т.к. мой метод не принимает никаких данных, только отдает тестовый массив в json.
0
Dethmontt
Модератор
Эксперт 1С
2523 / 2331 / 375
Регистрация: 10.03.2011
Сообщений: 8,179
Записей в блоге: 1
Завершенные тесты: 1
30.12.2016, 12:57 #9
Цитата Сообщение от tmac Посмотреть сообщение
в последнем Get-запросе, действительно можно обойтись без файлика
и в post запросе можно обойтись без файлика используя объект HTTPЗапрос

Добавлено через 1 минуту
tmac, методы Получить() и ОтправитьДляОбработки() это функции и они могут не записывая в файл возвращать объект HTTPОтвет
0
tmac
4 / 4 / 0
Регистрация: 11.10.2015
Сообщений: 12
30.12.2016, 13:38  [ТС] #10
я так понимаю, тут весь прикол файла в 1С, чтобы посчитать размер и передать в Content lenght.
подозреваю, что можно на лету посчитать длину строки и передать.

после НГ будем еще отрабатывать POST запросы на добавление записей в БД, используя токен, так накидаю еще примеры запросов, думаю, что кому-то еще пригодиться кроме меня.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2016, 13:38
Привет! Вот еще темы с ответами:

Установка Angular 2.3 на ASP .Net Core Web Api - C# ASP.NET
В интернете куча примеров установки ангуляра, но старых версий. Они не подходят для установки с Ангуляром 2.3.0. Я проект на ангуляре...

обработчик события в ASP.Net MVC 4 (Web Api) - C# MVC
Можно ли добавить в приложение типа ASP.Net MVC 4 (Web Api) серверные контролы? Если можно, то как? Мне нужно подписать кнопку на...

Редактирование записи базы данных (Web Api ASP.NET) - JavaScript
Есть база данных и нужно сделать редактирование записи. Вводим id записи , заполняем поля жмем кнопку и должны заменится старые данные...

ASP.NET Core + Web API. Как работает эта магия? - C# MVC
Собственно, чешу репу. Положил перед собой книгу Фримена, открыт сайт metanit, в закладках лежит харб. У всех трех источников логика подачи...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
30.12.2016, 13:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru