1

GET запрос в уведомлениях

Тема: GET запрос в уведомлениях

Привет, не совсем понятно в какую ветку, пусть тут будет....

Не получается разобраться почему не правильно работает GET запрос из уведомления:
- настроено уведомление на выход из геозоны. Срабатывает.
- уведомление должно отсылать данные через GET запрос для дальнейшей обработки 1С - но, сервер 1С не видит запроса.

Тестирую:
Запускаю на тестовом хосте express сервер на node js. уведомления переданные через POST вижу, обрабатываю. Если меняю на GET - express ничего не видит(в том числе с DEBUG=express:* )
запрос уведомления: http://10.1.2.115:4462/?unit=%UNIT%& … one=%ZONE% . Формируется правильно, вижу что он приходит tcpdump'ом. Если отправить его экпрессу через браузер работает.
Смотрю нодой просто tcp соединения(10.1.2.33 - wialon, 0.165 - просто рабочая станция):
CONNECTED: 10.1.2.33:55125
DATA 10.1.2.33: GET /?unit=%E2%84%96%2008%20%28%D0%A0345%D0%A5%D0%A536%29&time=2018%2D08%2D07%2016%3A08%3A45&zone=РАВ НИВА HTTP/1.1
Host: 10.1.2.115:4462
Accept: */*


CLOSED: 10.1.2.33 55125

CONNECTED: 192.168.0.165:10729
DATA 192.168.0.165: GET /?=a=b HTTP/1.1
Host: 10.1.2.115:4462
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7


CLOSED: 192.168.0.165 10729

CONNECTED: 10.1.2.33:33938
DATA 10.1.2.33: POST / HTTP/1.1
Host: 10.1.2.115:4462
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 107

unit=%E2%84%96%2016%20%28%D0%9A336%D0%A1%D0%A136%29&time=2018%2D08%2D07%2016%3A18%3A41&zone=РАВ НИВА
CLOSED: 10.1.2.33 33938

Итого, не работает, только если идёт GET от виалона. cors и т.п. на стороне ноды на результат не влияют, такое впечатление что что-то не так с гетом от виалон... Как можно ещё подебажить?

2

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

У нас на wialon local после обновления до версии 1804 тоже появились проблемы. Перестали выполнятся GET  и POST запросы в старых уведомлениях, которые до этого успешно работали. В чем может быть проблема?

3

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

dtorov, pavel-galant, здравствуйте.
Проверили на local 1804 отправку get и post запросов через уведомления. При этом отправляли их на локальный вебсервер с обработкой на php - всё отработало, на внешний вебсервер c nodejs - тоже всё отработало. Убедитесь, что запросы не режутся фаерволом на сервере с Local и на принимающем сервере.
Если есть подозрение, что старые уведомления с get/post-запросами после обновления перестали отрабатывать, попробуйте скопировать или создать новые уведомления и проверить их. Можете написать в саппорт или в ЛС подробности, доступы - проверим.

Solutions Department
Gurtam
4

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

Аналогично определенный процент запросов post в уведомлениях не отрабатывает
Код одинаковый - 10% уведомлений в потерях
Wialon Hosting

5

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

Попробовал потестировать через wiatag. Связка wiatag->flespi->WL
С flespi через stream (http) сообщения на мой web-сервер прилетают.
C WL через уведомление (условие - параметр в сообщении - диапазон) ничего не приходит. Настраивал уведомление 3 способами:
1. отправка только на email. письмо приходит
2. отправка только GET или POST. уведомления на web-сервер не приходят
3. одновременно email и GET или POST. ни на email ни web-сервер ничего не прилетает.

6

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

Какие параметры вы отсылаете в теле запроса (текст уведомления)?

Technical Support Specialist
Gurtam
7

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

которые стояли по умолчанию:
%UNIT%: Сработал параметр %PARAM_NAME% со значением %PARAM_VALUE%. В %POS_TIME% объект двигался со скоростью %SPEED% около '%LOCATION%'.

8

GET запрос в уведомлениях

(17/08/2018 20:03:18 отредактировано Ringo)

Re: GET запрос в уведомлениях

pavel-galant пишет:

которые стояли по умолчанию:
%UNIT%: Сработал параметр %PARAM_NAME% со значением %PARAM_VALUE%. В %POS_TIME% объект двигался со скоростью %SPEED% около '%LOCATION%'.

А каким образом оно должно в GET попасть?
У меня вот так ходит для вкл/выкл двигателя:

event=eng&unit=%UNIT%&time=%MSG_TIME_INT%&zone=%ZONE_MIN%&lat=%LATD%&lon=%LOND%&eng_prev=%SENSOR_VALUE_OLD%&eng=%SENSOR_VALUE%

и для геозоны:

event=geoin&unit=%UNIT%&time=%MSG_TIME_INT%&loc=%LOCATION%&zone=%ZONE_MIN%&lat=%LATD%&lon=%LOND%
9

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

Ringo пишет:

А каким образом оно должно в GET попасть?

Для теста не принципиально. Вся строка станет именем параметра GET запроса, а значение будет пустым. А так конечно Вы правы надо передавать строку вида: параметр=значение&параметр1=значение1...

10

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

pavel-galant пишет:

3. одновременно email и GET или POST. ни на email ни web-сервер ничего не прилетает.

Судя вот по этому, у вас Wialon не может распарсить строку с параметрами

11

GET запрос в уведомлениях

(20/08/2018 10:50:40 отредактировано dtorov)

Re: GET запрос в уведомлениях

Про GET выяснили - не работает в случае наличия пробела в значениях переменных запроса. Т.е., например, если ?zone=%ZONE% и в имени геозоны есть пробел.

12

GET запрос в уведомлениях

Re: GET запрос в уведомлениях

Проблему с отправкой get/post-запросов с пробелами в параметрах повторили, спасибо за бдительность, в скором времени будет исправлено.

Solutions Department
Gurtam
13

GET запрос в уведомлениях

(20/09/2018 13:55:30 отредактировано pash)

Re: GET запрос в уведомлениях

День добрый.

На данный момент содержимое всех тегов уже кодируется корректно и никакие символы в имени геозоны/маршрута/объекта или чего угодно, что  добавляется тегом, не приведут к ошибке отправления запроса.
Но сама строка при содержании незакодированного пробела оборвется и запрос не выполнится. Это решается кодированием пробелов и спецсимволов, тогда проблем никаких не будет. Это надо учитывать при использовании данного типа действия по уведомлению.

По проблеме с локалом ещё ведется работа. Вероятно в новой версии локала поменялось имя какого-то тега и из-за этого вместо подставления закодированного значения запрос пытается отправить %ТЕГ% и из-за этого могут быть проблемы.

Pavel Chabai
Business Analyst, Gurtam