Имя: Пароль:
1C
1С v8
HTTP-сервисы POST 8.3.9
0 EverGreenMouse
 
25.04.17
14:07
Легко освоив GET-сервисы уперся в создание POST.
Не понимаю каким чудом его реализовать и примеров в этих ваших интернетах весьма мало именно по формированию сервиса, а не запроса. Может у кого завалялся примерчик?
1 Юрий Лазаренко
 
25.04.17
14:26
(0) Сервис работает точно так же, как как и при GET. Просто параметры надо брать из тела запроса

    // В зависимости от типа запроса извлечем его параметры
    Если ТипЗнч(Запрос.ПараметрыЗапроса) = Тип("ФиксированноеСоответствие") И Запрос.ПараметрыЗапроса.Количество() > 0 Тогда
        // !!!!! Здесь возникают ошибки при передаче в параметрах значений с запрешенными знаками (например, кавычкой)
        // Это GET-запрос, параметры хранятся в Запрос.ПараметрыЗапроса
        Для Каждого КлючИЗначение Из Запрос.ПараметрыЗапроса Цикл
            ПараметрыЗапроса.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
        КонецЦикла;
    Иначе
        // Это POST-запрос, параметры содержатся в теле запроса в виде строки
        ПараметрыЗапроса = Новый Соответствие;
        ПараметрыСтрокой = СтрЗаменить(РаскодироватьСтроку(Запрос.ПолучитьТелоКакСтроку(), СпособКодированияСтроки.КодировкаURL), "&", Символы.ПС);
        Для Счетчик = 1 По СтрЧислоСтрок(ПараметрыСтрокой) Цикл
            ТекущийПараметр = СтрЗаменить(СокрЛП(СтрПолучитьСтроку(ПараметрыСтрокой, Счетчик)), "=", Символы.ПС);
            Если ЗначениеЗаполнено(ТекущийПараметр) Тогда
                ПараметрыЗапроса.Вставить(СтрПолучитьСтроку(ТекущийПараметр, 1), СтрПолучитьСтроку(ТекущийПараметр, 2));
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
2 EverGreenMouse
 
26.04.17
12:21
Вроде разобрался, спасибо)

Но один вопрос пока не отпускает:
я беру Запрос.ПолучитьТелоКакСтроку()

Как мне получить JSON, который я туда передаю? не очень хочется воевать с РазложитьСтрокуВМассивПодстрок()
3 ГдеСобака Зарыта
 
26.04.17
12:26
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);
    СтруктураJSON = ПрочитатьJSON(ЧтениеJSON,, МассивПолейДата);
    ЧтениеJSON.Закрыть();
4 EverGreenMouse
 
26.04.17
12:41
(3) Все, вот теперь разобрался окончательно)) Всем спасибо
5 Юрий Лазаренко
 
26.04.17
13:00
(4) "Все уже придумали до нас" (с)