Страницы

20 ноября 2018

HTTP-сервис 1С 2 часть

Продолжая первую статью HTTP-сервисы 1С сегодня рассмотрим способы передачи параметров HTTP-сервису 1С GET и POST методом.

Содержание:

1. Вспоминаем прошлые настройки
2. Создание метода HTTP-сервиса с параметром

3. Проверка работоспособности HTTP-сервиса с параметром
4. Передача данных по протоколу POST

5. Проверка работоспособности HTTP-сервиса по протоколу POST
6. Fiddler авторизация

1. Вспоминаем прошлые настройки

В прошлой статье мы создали чистую конфигурацию test. В нее добавили один справочник Оборудование, заполнили его тремя записями. Добавили HTTP-сервис СписокОборудования с Корневым URL - ob. Опубликовали конфигурацию под именем test.


2. Создание метода HTTP-сервиса с параметром


Откроем ранее созданный HTTP-сервис СписокОборудования, на вкладке Шаблоны URL добавьте новый шаблон ОборудованиеПоНомеру в свойстве Шаблон пропишите шаблон /info/{Code}, в качестве параметра будет выступать ключевое слово Code. Через этот параметр будем передавать номер оборудования, по нему искать и выводить найденное Название оборудования.


В шаблоне ОборудованиеПоНомеру добавляем метод obinfo. Для этого метода в свойстве HTTP-метод выбираем GET и создаем обработчик.






В обработчике напиши код поиска в справочнике Оборудование записи с кодом переданным через параметр Code и вернем результат клиенту. Ниже представлен листинг обработчика ОборудованиеПоНомеруobinfo:

Функция ОборудованиеПоНомеруobinfo(Запрос)
//Получаем значение с параметра Code
КодОборудования = Запрос.ПараметрыURL.Получить("Code"); 
     //Параметр чувствителен к регистру

//Выполняем поиск оборудования по номеру
Оборудование = Справочники.Оборудование.НайтиПоКоду(КодОборудования);

//Формируем ответ клиенту

Если Не ЗначениеЗаполнено(Оборудование) Тогда
//Если запись с таким кодом не найдена
Ответ = Новый HTTPСервисОтвет(204);
Иначе
//Если запись с такм кодом найдена, то

//Формируем структуру из найденной записи
ДанныеОборудования = Новый Структура;
ДанныеОборудования.Вставить("Code", Оборудование.Код);
ДанныеОборудования.Вставить("Naim", Оборудование.Наименование);

//Сериализуем данные в JSON
ЗаписьJOIN = Новый ЗаписьJSON;
ЗаписьJOIN.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJOIN,ДанныеОборудования);
СтрокаДляОтвета = ЗаписьJOIN.Закрыть();

//Формируем ответ клиенту
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-type","application/JOIN; charset=utf-8");
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета,КодировкаТекста.UTF8,
          ИспользованиеByteOrderMark.НеИспользовать);
КонецЕсли;

//Возвращаем ответ
Возврат Ответ;

КонецФункции

Осуществим повторную публикацию нашего сервиса выполнив пункты меню Администрирование / Публикация WEB-сервера...

3. Проверка работоспособности HTTP-сервиса с параметром


Определимся, по какому URL нужно обратиться, чтобы протестировать HTTP-сервис с параметром.
Строка URL HTTP-сервиса формируется как:
HTTP://<ИмяСервера>:порт>/<ИмяКонфигурации>/hs/<КорневойURL>/<Шаблон>/<Параметр> 

где:
ИмяСервера = localhost (или название вашего ПК, или доменное имя)
Порт = 8080 (можно не указывать, по умолчанию 80 порт)
ИмяКонфигурации = test
hs – означает, что обращаемся к HTTP-сервисам
КорневойURL = ob
Шаблон = info


Параметр = 000000003 


В результате получаем: http://localhost/test/hs/ob/info/000000003
Внимание! Путь чувствителен к регистру!

Сформированный URL-адрес вводим в браузер. После нажатия Enter скачается файл или отобразится содержимое в формате JSON. Этот файл можно открыть блокнотом и посмотреть что он содержит.




Как обращаться к HTTP-сервису через язык PHP рассматривали в прошлой статье.

4. Передача данных по протоколу POST



Поставим перед собой задачу: Клиент отправляет наименование оборудования HTTP-сервису, если такого оборудования в базе нет, то создаем его и выводим результат клиенту в формате JSON.

Аналогично предыдущему описанию создаем еще один шаблон URL ОборудованиеПоНаименованию в свойстве Шаблон прописываем /infopost. 




Создаем метод МетодPost. В свойстве HTTP-метод выбираем POST. Создаем обработчик.

В обработчике пишем код: 

Функция ОборудованиеПоНаименованиюМетодPost(Запрос)
//Получаем параметр запроса 
НаименованиеОборудования = Запрос.ПараметрыЗапроса.Получить("naim"); 

//Ищем оборудование 
Оборудование = Справочники.Оборудование.НайтиПоНаименованию(НаименованиеОборудования); 
Если НЕ ЗначениеЗаполнено(Оборудование) Тогда 
Оборудование = Справочники.Оборудование.СоздатьЭлемент();
Оборудование.Наименование = НаименованиеОборудования;
Оборудование.Записать(); 
Иначе 
Оборудование = Оборудование.ПолучитьОбъект(); 
КонецЕсли; 

//Формируем структуру из найденной записи
ДанныеОборудования = Новый Структура;
ДанныеОборудования.Вставить("code", Оборудование.Код);
ДанныеОборудования.Вставить("naim", Оборудование.Наименование);

//Сериализуем данные в JSON
ЗаписьJOIN = Новый ЗаписьJSON;
ЗаписьJOIN.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJOIN,ДанныеОборудования);
СтрокаДляОтвета = ЗаписьJOIN.Закрыть();

//Формируем ответ клиенту
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-type","application/JOIN; charset=utf-8");
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета,КодировкаТекста.UTF8,
        ИспользованиеByteOrderMark.НеИспользовать);

Возврат Ответ;

КонецФункции



5. Проверка работоспособности HTTP-сервиса по протоколу POST


К сожалению, нельзя из браузера, как с методом GET,  отправить запрос на HTTP-сервис. Поэтому мы воспользуемся бесплатной программой Fiddler (http://www.telerik.com/fiddler). Для создания запроса вручную достаточно перейти на вкладку Composer. Выбрать протокол POST и нажать кнопку Execute.



В результате в левой колонке мы увидим запрос клиента к HTTP-сервису. Выберем его и на вкладке JSON можно посмотреть, что вернул HTTP-сервис.



Результат в 1С.


6. Fiddler авторизация

Если в 1С имеются пользователи, то запрос в программе Fiddler без авторизации не выполнить, будет выдаваться ошибка авторизации 401.



Чтобы решить данную проблему необходимо выполнить ряд хитрых действий:
1. В программе Fiddler в меню Rules поставить галку Automatically Authenticate.
2. Для удобства поиска и просмотра нужной строки, в Fiddler очистить левый столбец (Ctrl+A и Delete) или мышкой используя контекстное меню с пунктом Remove/All sessions.
3. В браузере выполнить запрос к HTTP-сервису 1С методом GET, к примеру: http://localhost/test/hs/ob/info/000000003.
Браузер попросит ввести пользователя и пароль - производим аутентификацию. Если браузер не попросил указать логин и пароль, значит вы уже раз их вводили и браузер запомнил, нужно закрыть и открыть браузер повторно и еще раз выполнить запрос.
4. В программе Fiddler найти строку с запросом и на вкладке Headers найти параметр Authorization: Basic. 


Скопировать всю строку и вставить на вкладке Composer в поле заголовков запроса. 




Теперь можно выполнять любые запросы, в нашем случаи запрос через метод POST: http://1C/test/hs/ob/infopost?naim=Колонки
Результат выполнения



Отладив HTTP-сервисы используя программу Fiddler можно разрабатывать клинские приложения на любых языках поддерживающих JSON. К примеру в прошлой статье использовали язык PHP для создания веб страницы. 

11 комментариев:

  1. Спасибо большое! Очень полезная для разработчика статья!
    Особенно мне пригодился способ отладки HTTP сервиса (POST)

    ОтветитьУдалить
  2. Единственное авторизация в Fiddler у меня не сработала. Пришлось править файл публикации default.vrd
    ib="Srvr="192.168.xx.xxx";Ref="NameBase1C";usr=NameUser1C;pwd=1980912">

    ОтветитьУдалить
    Ответы
    1. У каждого системы настроены по разному, версии могут различаться. Поэтому бывают такие моменты. Если углубиться в проблему, решение найдется.

      Удалить
  3. Подскажите пожалуйста, как можно в сервисе, выполнить еще запрос на сервер, для получения параметра. И только потом формировать ответ.
    Например на php у меня отрабатывает вот такой код

    define('VERIFY_TOKEN', 'dfyzdfyz');

    $method = $_SERVER['REQUEST_METHOD'];

    if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe'
    && $_GET['hub_verify_token'] == VERIFY_TOKEN) {
    echo $_GET['hub_challenge'];
    ......

    ОтветитьУдалить
  4. Очень приятно, что статья помогла вам найти решение поставленных задач!

    ОтветитьУдалить
  5. А зачем какие - то фидлеры php... Как из 1С отправить???

    ОтветитьУдалить
  6. Сегодня возможность получить сертификат "все" челябинского института будет доступна любому, кто планирует показать свой уровень квалификации будущему или нынешнему работодателю. Когда вы учились в больнице, техникуме или колледже пару лет назад. И они согласились, что выбранная специальность подходит не всем, иначе вы никогда не потеряете шанс оплатить оставшееся время учебы - остается просто приобрести сертификат о военном образовании в челябинске здесь по разумной стоимости Какие преимущества получает наш клиент? Стоит напомнить весомый перечень преимуществ, которые наблюдаются в отличие от длительного обучения: - Получение самого важного ресурса молодежи - времени: экономия пяти и более лет, которую разрешается использовать для продажи навыков по специальности, гарантирования своего бизнеса и т.Д. - Вероятность получить работу по специализированной профессии, не читая определенных вещей, которые широко преподаются в учебных заведениях. - Повышение самооценки и авторитета в глазах родных, близких, коллег. - Экономия не только внимания, но и денег одновременно: цена обучения значительно дороже, чем покупка. Таким образом, мы предоставляем возможность активно развивать наши силы. Все понимают, что нынешняя система образования очень устарела, а также не соответствует потребностям рынка труда и существующим экономическим желаниям, и когда нерадивый студент покупает "сертификат об образовании для продвижения в профессиональной области, купить диплом http://diplomsznak.com/ Тогда это желание полностью оправдано.

    ОтветитьУдалить
  7. Исключительно поначалу профессия слесаря кажется непопулярной. В настоящее время ремонтник, имеющий профиль и профессионализм работы, получает зарплату, которая вам подходит, не испытывая трудовых заболеваний. Это работа, которая постоянно хорошо оплачивается. Чем выше ранг, тем больше вопросов к более существенным суммам в документе, которые человек имеет право рассчитать. Больше всего уважаются мастера, способные выполнять сложные технические ремонты, как вариант, механики механосборочных работ - мср. Однако следует помнить, что ни один сайт не примет сотрудника в родной штат при отсутствии подтверждающего образования. Что для грамотного специалиста, который не ушел, необходимо, чтобы поступление на такую вакансию было подтверждено наличием документа соответствующего вуза. Наш сервис готов значительно упростить вашу задачу. Мы предоставляем по доступным ценам приобрести сертификат слесаря различной специальности или категории. Скорее всего, полученные корочки станут достаточным маркером для финансово выгодного трудоустройства. Каковы особенности сотрудничества именно с нашей организацией? Они слегка: 1. Мы предлагаем дипломы недорого, оставляя возможность компенсировать стоимость их покупки из той же зарплаты. Цена наших дипломов минимальна, и перспектива того, во сколько вам обойдется поступление в высшее учебное заведение, отпадает у клиентов нашего агентства сама собой. 2. Наши корочки являются оригинальными, изготовленными гознаком, и, следовательно, нет никаких сложностей с их подлинностью. Оригинал свидетельства об образовании не вызовет сомнений у работодателя. 3. Курьеры нашей компании: fast доставят вам купленные документы в любое место мегаполиса, когда передадут их вам лично, не заставляя вас проходить через их получение. Доставка также реальна по просторам регионов российской федерации. Если вы хотите иметь солидную зарплату слесаря, пожалуйста, свяжитесь с нами! Где вы можете найти документ, подтверждающий наличие образования в данной области, по наиболее разумной цене, проверенный в нашей организации! Чтобы узнать больше о купить диплом http://diplomsznak.com/, Посетите наш портал.

    ОтветитьУдалить
  8. Порно видео чат пары, чтобы посмотреть порно мультфильм похотливой сабы вместе с ее строгим пары чат бесплатно Дамианом. Один старый еврей со спущенными штанами занимался анальным сексом с многоголосой женщиной в ночных очках. Снежная буря царапает в одном порядке. Молодая пара свернулась калачиком в смятом сексе и смотрит порно мультфильм. Полная сексуальная русская пара следит за съемками, их возбуждают позы профиля и ракурсы. Домашний анал с многоголосой парой. Сосущая русская девушка лижет анальную дырочку и сует член в жопу парню. Снежная королева и аладдин. Снежные короли помогают двум храбрым русским детям сориентироваться в этом. Кожаная задница пушистого карлика заставляет русскую пару, незнакомую ни с какой китайской поэзией, хмуриться и хмуриться.

    ОтветитьУдалить
  9. Цена за университетскую корочку варьируется от хитрого характера документа, но купить ее будет гораздо разумнее, Дипломы онлайн купить http://gosdiplomy.com/, Чем сидеть за партой все 5-6 лет на платном факультете университета. Когда клиент случайно пролил какао на корочку или просто потерял бетон, не сдавайтесь. Просто купите здесь корочку и отправляйтесь на деловую встречу без сомнений: работодатель, подходящий для вас, тоже не узнает об этом при внимательном изучении этой официальной бумаги. Мы поможем каждому получить вакантную работу с перспективой повышения заработной платы! Елецкий государственный университет имени и.А. Бунина Когда вы вознамерились заказать сертификат специалиста, а также эксперта, стать востребованным менеджером и работать в авторитетной компании в ельце, обратитесь к менеджерам realdiplom. Все 5-6 лет работы мы работаем над изготовлением дипломов, соответствующих принятым стандартам. Корочки выдаются на гербовых бумагах с удобным уровнем защиты, на бланках имеются подлинные печати деканов и ректоров, используемые нами. Сотрудники указывают личные характеристики выпускника, год выпуска, примерное название профессии плюс ее код, полное название вуза и другую необходимую информацию. Существует также вспомогательная услуга - изготовление приложения к документу. Мы обеспечим все, чтобы ваши оценки были исключительно нормальными и приятными, а работодатель узнал, какой вы действительно хороший профессионал! Мы предоставляем вам возможность получить степень магистра, которая поможет вам в вашей должности. Мы пользуемся услугами опытных сотрудников, которые предоставляют проверенные промышленные машины и строят их по оптимальной цене. Здесь постоянно проводятся розыгрыши, это делает сотрудничество особенно приемлемым и доступным. Легко оформить корочки с оперативной доставкой, например, по адресу, на станцию метро или на рабочее место. При доставке возникли недоумения, менеджеры обязательно вам все объяснят.

    ОтветитьУдалить