Имя: Пароль:
1C
 
Как правильно отлаживать http сервисы
0 falselight
 
27.06.20
08:21
Произвожу исследование http сервисов. По одному видео сделал один. Настроил отладку.
Тест производиться в тестовой конфигурации, пустой. на SQL Server. Для отладки используется приложение Postman.

http://joxi.ru/gmvaZ43tvjaLGr

http://joxi.ru/LmGbQ18CJOEeOr

Программа Postman выдает результат отработки этого сервиса http://joxi.ru/D2PlR54CkNgp02

отладка работает.

В Postman сервис проверяется по этой строке localhost/http/hs/ServIIS/getdata

ВОПРОС!!!! Почему в веб браузере нет результата выполнения этого http сервиса ?

http://joxi.ru/xAe7lqJig4Dp0m

Как что бы увидеть результат выполнения http сервиса в браузере  ?
1 falselight
 
27.06.20
08:40
Ребят. Ну кто занимается http сервисами, подскажите по вопросу. Для меня это новое.

Не понял почему в браузере не работает отладка, что там не доделал я ?
2 Garykom
 
гуру
27.06.20
09:19
fiddler
3 Strogg
 
27.06.20
12:22
Может быть, потому что боаузер не может отобразить твой ответ? Я, например, делал хттп сервис, который возвращает ответ в виде потока json. Без расширения хром его не схавал никак. Хоть параметры обпередавайся.
4 acht
 
27.06.20
12:29
(0) Там внизу, в секции "Дополнительные сведения", русским языком все написано, Андрей.

После ввода адреса в командную строку браузер посылает GET. А на что настроен твой сервис, отсюда не видно. По скриншоту postman можно предположить, что это POST.
5 pechkin
 
27.06.20
12:42
лучше отлаживать как простую серверную процедуру
6 falselight
 
27.06.20
13:18
(4) Буду заниматься !!!
7 Сияющий в темноте
 
27.06.20
16:48
а что там отлаживать?
передачу json в обе стороны можно отладить только один раз.
а разбор jsonв 1с можно делать уже просто,подставляч нужный запрос из файла,вместо ввзова сервиса.
8 falselight
 
27.06.20
18:05
(7) Ну вот, буду заниматься.
Не знаком с http сервисами и json.
Побочно ещё вот, про все узнаю.
Буду делать..

Сейчас хочется что бы в браузере увидеть выполнение http сервиса.
9 Сияющий в темноте
 
27.06.20
23:45
В браузере ты можешь увидеть только ответ,да и то не всегда в удобном виде.
10 Sereja
 
28.06.20
00:24
для web-сервисов очень нравится плагин к хрому wizdler
подойдет ли он к http сервису не в курсах
11 falselight
 
28.06.20
05:58
(9)(10) Буду разбираться.

Ну так вот же простой ответ, Ок. http://joxi.ru/LmGbQ18CJOEeOr

В Postman выводится. А в браузере нет.
12 ДенисЧ
 
28.06.20
06:26
(11) Грех с утра ругаться, но


curl попробуй, что он тебе в заголовках покажет?
13 falselight
 
28.06.20
07:02
Что такое curl ? Как его попробовать?
14 ДенисЧ
 
28.06.20
08:41
(13) в гугль не пробовал сходить?
15 falselight
 
28.06.20
15:44
(14) Конечно пробовал и сразу, но там что то сильно завихренное, по этому я отказался.
16 ДенисЧ
 
28.06.20
16:00
(15) Тогда это не твоё.
17 zmaximka
 
28.06.20
19:10
(11)
Попробуй помочь бразуеру указав тип содержимого
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "text/html;charset=utf-8");
Ответ.Заголовки = Заголовки;
18 acht
 
28.06.20
19:28
(15) >  там что то сильно завихренное, по этому я отказался.
Ну её, эту 1С, Андрей. Там всё такое.
19 zmaximka
 
28.06.20
19:44
(о) ошибка из-за того что браузер посылает запрос GET, а хттп-сервис у тебя ожидает запрос POST
20 acht
 
28.06.20
19:56
(19) Про это ему часов 7 назад сказали
21 MyNick
 
28.06.20
21:04
(20) я об этом еще в прошлой ветке вчера наванговал)
Отсутствует отладка http в 1c
22 falselight
 
29.06.20
06:21
(21) Ну да, запрос POST

http://joxi.ru/1A5MePyuG8MZ8A

А как правильно делать? Делал по видео. Почему там использовали POST?

Через Postman отладка работает.

(17) Пока ничего не поменялось. Но в Postman работает http://joxi.ru/a2XLyRxiDj67q2 .


вот, весь код http сервиса



// ---------------------------------------------------------------------------------------------------------------------------------------------
Функция getdatapost(Запрос)
    Ответ             = Новый HTTPСервисОтвет(200);
    СтруктураОтвета = Новый Структура("result, data");
    СтруктураОшибки = Новый Структура("error, text", Ложь, "");
    //
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "text/html;charset=utf-8");
    Ответ.Заголовки = Заголовки;    
    //
    Попытка
        json   = Запрос.ПолучитьТелоКакСтроку();
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(json);
        ЗапросСтруктура      = ПрочитатьJSON(Чтение);
        СтруктураОтвета.data = ПолучитьДанныеКонтрагентаПоИНН(ЗапросСтруктура);
    Исключение
        СтруктураОшибки.error = Истина;
        СтруктураОшибки.text  = ОписаниеОшибки();
    КонецПопытки;
    //
    //Ответ.УстановитьТелоИзСтроки("Ок");
    //
    СтруктураОтвета.result = СтруктураОшибки;
    ТекстОтвета            = СформироватьJSON(СтруктураОтвета);
    Ответ.УстановитьТелоИзСтроки(ТекстОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    Возврат Ответ;
КонецФункции
// ---------------------------------------------------------------------------------------------------------------------------------------------
Функция СформироватьJSON(Структура)
    ЗаписьJSON = Новый ЗаписьJSON;    
    ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, , Истина));
    НастройкиСериализацииJSON                          = Новый НастройкиСериализацииJSON;
    НастройкиСериализацииJSON.ВариантЗаписиДаты      = ВариантЗаписиДатыJSON.ЛокальнаяДатаСоСмещением;
    НастройкиСериализацииJSON.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
    ЗаписатьJSON(ЗаписьJSON, Структура, НастройкиСериализацииJSON);
    Возврат ЗаписьJSON.Закрыть();
КонецФункции
// ---------------------------------------------------------------------------------------------------------------------------------------------
Функция ПолучитьДанныеКонтрагентаПоИНН(Данные)
    ДанныеКонтрагента = Новый Структура("ФИО, ИНН", "", "");
    Запрос          = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    Контрагенты.Наименование КАК ФИО,
        |    Контрагенты.ИНН          КАК ИНН
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |    Контрагенты.ИНН = &ИНН";
    Запрос.УстановитьПараметр("ИНН", Данные.inn);
    Рез = Запрос.Выполнить();
    Если Не Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Пока Выборка.Следующий() Цикл
            ЗаполнитьЗначенияСвойств(ДанныеКонтрагента, Выборка);
        КонецЦикла;
    Иначе
        Возврат ДанныеКонтрагента;
    КонецЕсли;
    Возврат ДанныеКонтрагента;
КонецФункции
// ---------------------------------------------------------------------------------------------------------------------------------------------
23 spectre1978
 
29.06.20
07:22
Все не читал, про fiddler уже говорили?
24 falselight
 
29.06.20
07:25
(23) в (2) сказали

в что такое fiddler ?
25 falselight
 
29.06.20
07:26
Понятно fiddler программа.

Ну так я Postman использую. Это аналог?

Речь шла о том что не работает в браузере !!!!
26 sitex
 
naïve
29.06.20
07:31
(25) Параметры POST как в браузере передаешь ?
27 Мимохожий Однако
 
29.06.20
07:31
(25) Так тебе отладить запрос или обязательно в браузере отладку запустить? "Вам шашечки или ехать?"
28 falselight
 
29.06.20
07:36
(26) нет, наверное не умею ещё

в браузере я передаю вот эту строку http://localhost/http/hs/ServIIS/getdata

(27) В браузере хотел посмотреть и не понял почему работает.

Я же написал, что все отлажено и работает через Postman .

А как работает этот fiddler я не понял !!!!!!!
29 falselight
 
29.06.20
07:38
(26) В Postman я тестирую так http://joxi.ru/a2XLyRxiDj67q2

И то это я увидел все в видео. А как тестировать в fiddler неизвестно.

Так же как запустить в браузере не понятно.
30 sitex
 
naïve
29.06.20
07:38
(28) Fiddler-е, да также работает.  Просто в нем немного проще.
31 sitex
 
naïve
29.06.20
07:41
(28) Postmane - ты отправил post запросе с телом . Ответ получил. В брайзере ты просто отправил пустой POST получил ошибку. Все норм. Отправь GET с параметрами в адресной строке и выйдет тебе ответ.
32 Галахад
 
гуру
29.06.20
07:45
(0) Закомментируй строку:
Тело = Запрос.ПолучитьТелоКакСтроку();
33 falselight
 
29.06.20
08:38
(30) Ну и как также?
ввел куда то строку, куда увидел, нажимаю GO! И ничего. Я открыл его и не понял как так же.

(31) Я не совсем понимаю как это будет. Если код сервиса, как в (22) то какого вида строку нужно вставить в браузере, если в Postman она такая?

http://localhost/http/hs/ServIIS/getdata

Вы разбираетесь , очевидно знаете какая она будет. Подскажите пожалуйста?

(32) А где такая строка в (22) ? Если там закомментировать вот эту,

json   = Запрос.ПолучитьТелоКакСтроку();

то будет ошибка

{HTTPСервис.HTTPServerIIS.Модуль(15,27)}: Переменная не определена (json)
        Чтение.УстановитьСтроку(<<?>>json); (Проверка: Сервер)
34 Галахад
 
гуру
29.06.20
08:47
(33) Фиг знает где в (22). Я писал для кода в (0).

А по (22), нафига писать какой-то код в модуле сервиса, его потом отлаживать надо.
Проще так:

    СтрокаXML = Запрос.ПолучитьТелоКакСтроку();
    Результат = НекийОбщийМодуль.НекаяФункция(СтрокаXML);
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки(Результат);
    
    Возврат Ответ;
35 falselight
 
29.06.20
08:58
(34) А в общем модуле не нужно отлаживать?

какая разница, не совсем понял. Тут вопрос в системном программировании у вас
36 sitex
 
naïve
29.06.20
09:03
(33) Fiddler есть вкладка "Composer", далее во вкладке Parsed выбираешь метод get, post. Вводишь адрес сервиса. Ниже будет поле описание заголовков. При post либо файл выбираешь , либо руками json копируешь где написано request body и все жми Execute. Вкладка с ответом перейдет автоматом.
37 Галахад
 
гуру
29.06.20
09:12
(35) Например, в том что общие модули отлаживать проще.
38 sitex
 
naïve
29.06.20
09:26
(33) в чем принципиальность отладки через Браузер ? Можно конечно отправить post запрос через console браузера, курим -> fetch . Но это гемор еще тот.
39 falselight
 
29.06.20
13:48
Этот сервис http (22) сделан по методу POST, а если делать по методу GET

в чем там будет различие и разница????

Или по каким другим имеющимся в списке методам???
40 sitex
 
naïve
30.06.20
07:11
(39) Каждый метод под свои задачи. Расписывать все очень долго. Лучше найти спец-ю литературу и ознакомиться, коих в интее тьма.
41 dezss
 
30.06.20
08:21
(39) Да твою ж.
Почитай уже про GET, POST, PUT и т.д.
Браузер всегда посылает GET. У тебя там обработки GET-запроса. Вот и все.
У GET-а нет тела. Так что параметры надо передавать через строку запроса.
42 ДенисЧ
 
30.06.20
08:23
(41) "Браузер всегда посылает GET"
Чегооооо?
43 MyNick
 
30.06.20
08:38
(42) запрос через адресную строку - это GET, а что не так?
44 ДенисЧ
 
30.06.20
08:50
(43) А запрос через кнопку в форме - это post. Что не так?
45 dezss
 
30.06.20
17:34
(44) Запрос через кнопку на форме - это уже зависит от того, как обрабатывается это нажатие. Может там вообще просто "Hello world!!!" выведется.
46 dezss
 
30.06.20
17:34
(45) + и это не браузер посылает, а сайт.
47 ДенисЧ
 
30.06.20
17:39
(46) Шта?
48 dezss
 
03.07.20
16:59
(47) А что не так?
49 Sysanin_1ц
 
06.07.20
03:40
(0) Посмотри в ютьюб Низамов school. Там парень как раз на http сервисах в 1с специализируется и видосы выкладывает. Можно напрямую и вопрос задать
50 unbred
 
06.07.20
09:19
https://skr.sh/s31EDJ33xM1
за 4 года уже пора-бы научиться пользоваться гуглом.
51 hhhh
 
06.07.20
09:29
(50) что-то вы чудите. Это же ливинг стар, у него стаж лет 15.
2 + 2 = 3.9999999999999999999999999999999...