Имя: Пароль:
1C
 
Обмен с сайтом/другой базой (в две стороны). HTTP-сервис. JSON
0 AnBlast
 
28.11.19
16:02
День добрый...

Пытаюсь осваивать обмен с сайтом.
Суть
- есть база 1С в которой можно отслеживать доступность номеров для бронирования (а так же цены и тучу еще всего)
- есть сайт который должен спросить у этой базы доступность и показать ее пользователю в вебе.

Сайт еще не закончен и сервисов с его стороны еще нет. Потому пробую решать аналогичную задачу используя только 1С. Сделал базу. Опубликовал http-сервис (GET). В итоге в браузере вижу JSON нужной мне структуры.
Теперь надо эти данные получить и прочитать из другой базы. И вот на этом месте все... продвижения нет.

Собственно опыта (понимания походу) http-сервисов нет. RTFM - ok. Только не могу найти похожего мануала.
Подскажите куда копать. Или ссылку правильную плиз.

Заранее Спасибо.
1 Beduin
 
28.11.19
16:04
(0) Веб-сервер это просто программка, которая по определенным запросам дает ответы.
2 ДенисЧ
 
28.11.19
16:09
Гугли слово REST.
Я - полный нуль в вебе, разобрался и написал такое (плюс и свой рест-сервер) за полдня
3 AnBlast
 
28.11.19
16:13
(1) ок.
в браузере по строке http://localhost/Test_HTTP_1/hs/info?action=getrooms получают ответ в виде
[
{
"date_begin": "2019.10.10",
"date_end": "2019.10.16",
"seats": 2,
"seats_child": 0,
"check_in": 1,
"check_out": 1,
"nutrition": "hb"
}
]

Это тот формат, который потом будет отдавать сайт...
Далее написал обработку которая по кнопке должна обратиться к этому делу. Код из какого-то мануала... Может важно, что для публикации юзаю GET, а при получении POST.
На выходе 401 ((

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Адрес = "http://localhost/Test_HTTP_1/hs/info?action=getrooms";;
    ПарамОтвет = Новый Структура;
    ВыполнитьHTTPЗапрос(Адрес, "", "POST", ПарамОтвет);
    
    Если Сред(ПарамОтвет.Ошибка, 1, 28) = "КодСостояния HTTP-запроса: 2" Тогда
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(ПарамОтвет.Ответ);
        Структ = ПрочитатьJSON(Чтение, Истина);
        
    Иначе
        Сообщить(ПарамОтвет.Ошибка)
    КонецЕсли;    

КонецПроцедуры
4 ДенисЧ
 
28.11.19
16:17
"что для публикации юзаю GET, а при получении POST"

Нормальные люди публикуют через POST
А получают данные через GET...
5 AnBlast
 
28.11.19
16:42
(4) т.е. я категорически криво делаю? не смотря на то, что через браузер я вижу публикацию GETом
6 ДенисЧ
 
28.11.19
16:53
(5) Тогда что в твоём понимании "публикация"?
В моём - это размещение данных на сервере. То есть передача из 1с на сервер.
Или ты называешь "публикацией" некую статью на сервере?
7 AnBlast
 
28.11.19
16:57
(6) не... я по нажатию Ф5 в браузере получаю нужную мне инфу нужной структуры. А вот как теперь эту инфу прочитать/получить в соседней базе не догоняю
8 AnBlast
 
28.11.19
16:57
т.е. веб сервер публикует то, что я ему сказал. а теперь это забрать бы
9 ДенисЧ
 
28.11.19
16:57
(7) Ф5 - это типичный гет. Так что тебе нужно сформировать гет-запрос, чтобы получить инфу. А если ты её хочешь загрузить на сервер (обычные люди говорят "опубликовать") - нужно в общем случае делать пост.
10 AnBlast
 
28.11.19
17:01
(9) т.е. если я вижу в браузере - все ок. опубликовано...
а теперь надо из 1С ГЕТ-запросом по этому же адресу это забрать?
типа
ВыполнитьHTTPЗапрос(Адрес, "", "GET", ПарамОтвет);
11 Галахад
 
гуру
28.11.19
17:04
Хм, а что делает ВыполнитьHTTPЗапрос?
12 AnBlast
 
28.11.19
17:09
(11) собственно выполняет разные запросы собственно.
там и Гет и Пут и Пост...
Процедура ВыполнитьHTTPЗапрос(ПолныйАдресРесурса, ТекстЗапроса, ТипЗапроса, ПарамОтвет) Экспорт

в конфе оно работает... просто никогда не делался двухсторонний обмен по запросу с той стороны. Раньше были только односторониие, но и из 1С на сайт и из сайта в 1С.
13 Галахад
 
гуру
28.11.19
17:16
Ну ок. Работает и ладно.
14 AnBlast
 
28.11.19
17:49
(13) Спсибо ))
Дело было в заголовках. Я тупо скопипастил процедуру, а там настройки под старый сайт. Ну и лажа ессно. Убрал установку заголовков - все прочиталось GEМом.
15 Галахад
 
гуру
28.11.19
17:50
Всегда приятно помочь.