|
POST запрос в 1с 8.2 на видеорегистратор | ☑ | ||
---|---|---|---|---|
0
Nikname232
27.07.17
✎
14:23
|
Всем привет. Хочу передать данные видеорегистратору через 1с по POST запросу.
вот код Процедура ОтправитьТекст () Сервер = "http://192.168.1.36"; Ресурс = "ISAPI/ContentMgmt/InputProxy/channels/1/video/overlays/text/1"; HTTP = Новый HTTPСоединение("http://192.168.1.36",80,"admin","admin",,Истина); ФайлЗапроса = ПолучитьИмяВременногоФайла(); ТелоЗапроса = ПолучитьТелоЗапроса(); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст(ТелоЗапроса); ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI); ФайлОтправки = Новый Файл(ФайлЗапроса); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ФайлРезультата = ПолучитьИмяВременногоФайла(); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки); ЗаголовокHTTP.Вставить("Content-Type", "application/json; charset=utf-8"); HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP); ТекстовыйФайлОтвет = Новый ТекстовыйДокумент; ТекстовыйФайлОтвет.Прочитать(ФайлРезультата,КодировкаТекста.UTF8); СтрокаОтветСервера = ТекстовыйФайлОтвет.ПолучитьТекст(); КонецПроцедуры Функция ПолучитьТелоЗапроса () ЗапросТекст = "?xml version=""1.0"" encoding=""UTF-8"" ?> |<TextOverlay version=""1.0"" xmlns=""http://www.hikvision.com/ver20/XMLSchema""> |<id>1</id> |<enabled>true</enabled> |<positionX>0</positionX> |<positionY>544</positionY> |<displayText>TEST</displayText> |</TextOverlay>"; Возврат ЗапросТекст; КонецФункции Выдает ошибку : {Форма.Форма.Форма(75)}: Ошибка при вызове метода контекста (ОтправитьДляОбработки) HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, по причине: Ошибка работы с Интернет: Couldn't resolve host name Кто нибудь сталкивался с такой проблемой? |
|||
1
Волшебник
модератор
27.07.17
✎
14:26
|
обычный пинг работает?
|
|||
2
Nikname232
27.07.17
✎
14:29
|
только проверил, да работает. (1)
|
|||
3
Юрий Лазаренко
27.07.17
✎
14:29
|
||||
4
dezss
27.07.17
✎
14:29
|
ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>), вроде ж 2 параметра, а не 4.
(2) а телнет можешь сделать? |
|||
5
Nikname232
27.07.17
✎
14:29
|
странно, но почему то в отладчике на HTML.сервер указано просто "html" и строковом виде.
|
|||
6
Юрий Лазаренко
27.07.17
✎
14:29
|
без http://
|
|||
7
Nikname232
27.07.17
✎
14:30
|
(3) да, уже делал.
|
|||
8
Волшебник
модератор
27.07.17
✎
14:34
|
Как вариант, антивирус рубит интернет-трафик от 1С
|
|||
9
Nikname232
27.07.17
✎
14:36
|
(4) нет, через telnet не подключается
|
|||
10
dezss
27.07.17
✎
14:37
|
Народ, а как это будет работать?
HTTP.ОтправитьДляОбработки(ФайлЗапроса, Ресурс, ФайлРезультата, ЗаголовокHTTP); Там жеж 2 параметра, первый из которых HTTPЗапрос. Или на какой-то версии 1с добавились варианты? (9) вот и ответ...ты не можешь по этому порту достучаться |
|||
11
Nikname232
27.07.17
✎
14:38
|
(8) антивирус отключен. и брэндмауэр уже тоже
|
|||
12
dezss
27.07.17
✎
14:38
|
(11) а сам регистратор по какому порту принимает подключения?
попробуй 8080 |
|||
13
Garykom
гуру
27.07.17
✎
14:39
|
(0) Нет не сталкивались ибо у нас СП есть и мы читать умеем.
Могу продать СП (дорого) и даже научить читать (это ваще неприлично дорого будет стоить). |
|||
14
Nikname232
27.07.17
✎
14:40
|
(12) Регистратор по http - 80 порт а https - 443, они активны, проверил
|
|||
15
dezss
27.07.17
✎
14:41
|
(14) как проверил?
первая ж проверка - это постучаться туда по телнет...если не удается достучаться, то фиг че выйдет... |
|||
16
dezss
27.07.17
✎
14:43
|
(15) хотя пох на это пока...
он же у тебя имя не может разрешить... |
|||
17
Nikname232
27.07.17
✎
14:44
|
(15) я тупанул.
серез телнет подключается все. вместо пробела ставил двоеточие |
|||
18
dezss
27.07.17
✎
14:46
|
(17) молодец)))
а теперь объясни где нашел такое описание ОтправитьДляОбработки с 4-мя параметрами. СП показывает другое. |
|||
19
dezss
27.07.17
✎
14:46
|
||||
20
Nikname232
27.07.17
✎
14:48
|
(19) telnet 192.168.1.36 80
|
|||
21
Nikname232
27.07.17
✎
14:48
|
я и сервер изменил на 192.168.1.36 без http:// (19)
|
|||
22
dezss
27.07.17
✎
14:51
|
Насколько мне помнится, когда делаешь ОтправитьДляОбработки, то к серверу присобачивается ресурс, к кот корому на этом сервере пытаешься обратиться...и вот в качестве ресурса он у тебя берет хз что...
|
|||
23
Nikname232
27.07.17
✎
14:57
|
(22) это путь к настройкам текстового наложения по каналу.
если я этот путь пропишу в браузере, то выдает вот это This XML file does not appear to have any style information associated with it. The document tree is shown below. <TextOverlay xmlns="http://www.std-cgi.com/ver20/XMLSchema" version="1.0"> <id>1</id> <enabled>false</enabled> <positionX>32</positionX> <positionY>96</positionY> <displayText>ТЕСТ</displayText> </TextOverlay> |
|||
24
dezss
27.07.17
✎
15:15
|
(23) Еще раз.
Покажи синтаксис ОтправитьДляОбработки, который ты пытаешься использовать. Я не нашел синтаксиса с 4 параметрами. |
|||
25
arsik
гуру
27.07.17
✎
15:46
|
(24) У него платформа старая. В 8.1 как раз 4 параметра
|
|||
26
arsik
гуру
27.07.17
✎
15:47
|
(0) Попробуй через "Получить()"
|
|||
27
Garykom
гуру
27.07.17
✎
15:47
|
(25) тема: "POST запрос в 1с 8.2 на видеорегистратор"
|
|||
28
Nikname232
29.07.17
✎
12:01
|
все бьюсь с этим POST запросом.
На данном этапе нашел код в интернете и теперь код такой: ТелоPOSTЗапроса = "<?xml version='1.0' encoding='utf-8'?><VideoOverlay><normalizedScreenSize><normalizedScreenWidth>704</normalizedScreenWidth><normalizedScreenHeight>576</normalizedScreenHeight></normalizedScreenSize><attribute><transparent>false</transparent><flashing>false</flashing></attribute><fontSize>2</fontSize><TextOverlayList><TextOverlay><id>1</id><enabled>true</enabled><displayText>Привет11111</displayText><positionX>32</positionX><positionY>96</positionY></TextOverlay><TextOverlay><id>2</id><enabled>true</enabled><displayText>Салам</displayText><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>3</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>4</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>5</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>6</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>7</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>8</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay></TextOverlayList><DateTimeOverlay><enabled>true</enabled><positionX>16</positionX><positionY>32</positionY><dateStyle>DD-MM-YYYY</dateStyle><timeStyle>24hour</timeStyle><displayWeek>true</displayWeek></DateTimeOverlay><channelNameOverlay><enabled>true</enabled><positionX>512</positionX><positionY>512</positionY></channelNameOverlay></VideoOverlay>"; //POST-запрос на сервер-приёмник СерверПриемник = "192.168.1.36"; //имя сервера без протокола (http) и порта АдресСтраницыНаСервере = "/ISAPI/ContentMgmt/InputProxy/channels/1/video/overlays/text"; // ЗаголовкиHTTP = Новый Соответствие; //ЗаголовкиHTTP.Вставить("DeviceStatus version=" + ""1.0"", "xmlns=" + """http://www.hikvision.com/ver20/XMLSchema"""); //ЗаголовкиHTTP.Вставить("Accept-Encoding", "gzip, deflate"); //ЗаголовкиHTTP.Вставить("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3"); //ЗаголовкиHTTP.Вставить("Authorization", "Basic YWRtaW46YWRtaW4xMjM0"); //ЗаголовкиHTTP.Вставить("Connection", "keep-alive"); //ЗаголовкиHTTP.Вставить("Content-Length", "1703"); ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); //ЗаголовкиHTTP.Вставить("Cookie", "language=ru; sdMarkMenu=4%3Aimage; sdMarkTab_1_0=0%3AsettingBasic; sdMarkTab_4=1%3Aosd"); //ЗаголовкиHTTP.Вставить("Host", "192.168.1.36"); //ЗаголовкиHTTP.Вставить("If-Modified-Since", "0"); //ЗаголовкиHTTP.Вставить("Referer", "http://192.168.1.36/doc/page/config.asp"); //ЗаголовкиHTTP.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"); //ЗаголовкиHTTP.Вставить("X-Requested-With", "XMLHttpRequest"); Таймаут = 120; //SSL = Истина;//?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено); НТТР = Новый HTTPСоединение(СерверПриемник,,"admin","admin1234",,Таймаут,); Попытка //Формируем HTTP запрос ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницыНаСервере, ЗаголовкиHTTP); ЗапросHTTP.УстановитьТелоИзСтроки(ТелоPOSTЗапроса); //Устанавливает строку, из которого будет прочитано тело POST-запроса. //Ответ от сервера получим в возвращаемом значении типа HTTPОтвет ОтветHTTP = НТТР.ОтправитьДляОбработки(ЗапросHTTP); Исключение ТекстСообщения = НСтр("ru = 'Неудачная попытка соединения с '") + СерверПриемник + ": " + ОписаниеОшибки(); //ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); Возврат; КонецПопытки; СтрокаОтветаСервера = ОтветHTTP.ПолучитьТелоКакСтроку(); В Мозиле через консоль словил POST запрос, на основании которого пытаюсь делать подобный на 1с. POST запрос: <?xml version='1.0' encoding='utf-8'?> <VideoOverlay><normalizedScreenSize><normalizedScreenWidth>704</normalizedScreenWidth><normalizedScreenHeight>576</normalizedScreenHeight></normalizedScreenSize><attribute><transparent>false</transparent><flashing>false</flashing></attribute><fontSize>2</fontSize><TextOverlayList><TextOverlay><id>1</id><enabled>true</enabled><displayText>Привет</displayText><positionX>32</positionX><positionY>96</positionY></TextOverlay><TextOverlay><id>2</id><enabled>true</enabled><displayText>Салам</displayText><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>3</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>4</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>5</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>6</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>7</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>8</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay></TextOverlayList><DateTimeOverlay><enabled>true</enabled><positionX>16</positionX><positionY>32</positionY><dateStyle>DD-MM-YYYY</dateStyle><timeStyle>24hour</timeStyle><displayWeek>true</displayWeek></DateTimeOverlay><channelNameOverlay><enabled>true</enabled><positionX>512</positionX><positionY>512</positionY></channelNameOverlay></VideoOverlay> на адрес: http://admin:[email protected]/ISAPI/System/Video/inputs/channels/1/overlays Заголовки такие: пришлось скрин сделать, иначе не получается. https://ibb.co/mdDcFQ И ответ в Мозиле следующий: <?xml version="1.0" encoding="UTF-8" ?> <ResponseStatus version="1.0" xmlns="urn:psialliance-org"> <requestURL>/ISAPI/System/Video/inputs/channels/1/overlays</requestURL> <statusCode>1</statusCode> <statusString>OK</statusString> <subStatusCode>ok</subStatusCode> </ResponseStatus> В моем случае в 1С ответ приходит такой: <?xml version="1.0" encoding="UTF-8" ?> <ResponseStatus version="1.0" xmlns="urn:psialliance-org"> <requestURL>/ISAPI/ContentMgmt/InputProxy/channels/1/video/overlays/text</requestURL> <statusCode>4</statusCode> <statusString>Invalid Operation</statusString> <subStatusCode>methodNotAllowed</subStatusCode> </ResponseStatus> Подскажите пожалуйста, что я не так делаю. Направьте в правильное русло. Спасибо. |
|||
29
Nikname232
29.07.17
✎
16:01
|
up
|
|||
30
Nikname232
29.07.17
✎
21:14
|
Итак, господа, все работает, спасибо кто содействовал, если кому пригодится код ниже:
Процедура ОтправитьТекст () Сервер = "192.168.1.36"; Ресурс = "ISAPI/System/Video/inputs/channels/1/overlays"; Порт = 80; HTTP = Новый HTTPСоединение(Сервер,Порт,"admin","admin1234"); ФайлЗапроса = ПолучитьИмяВременногоФайла(); ТелоЗапроса = ПолучитьТелоЗапроса("ТЕСТ1"); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст(ТелоЗапроса); ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8); ФайлОтправки = Новый Файл(ФайлЗапроса); ФайлРезультата = ПолучитьИмяВременногоФайла(); HTTP.Записать(ФайлОтправки.ПолноеИмя, Ресурс); КонецПроцедуры Функция ПолучитьТелоЗапроса (ИМЯ) ЗапросТекст = "<?xml version='1.0' encoding='utf-8'?> |<VideoOverlay><normalizedScreenSize><normalizedScreenWidth>704</normalizedScreenWidth> |<normalizedScreenHeight>576</normalizedScreenHeight></normalizedScreenSize><attribute> |<transparent>false</transparent><flashing>false</flashing></attribute><fontSize>2</fontSize> |<TextOverlayList><TextOverlay><id>1</id><enabled>true</enabled><displayText>" + имя + "</displayText> |<positionX>32</positionX><positionY>150</positionY></TextOverlay><TextOverlay> |<id>2</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>3</id><enabled>false</enabled><displayText/><positionX>16</positionX><positionY>224</positionY></TextOverlay><TextOverlay><id>4</id><enabled>false</enabled><displayText/><positionX>352</positionX><positionY>96</positionY></TextOverlay><TextOverlay><id>5</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>6</id><enabled>false</enabled><displayText/><positionX>496</positionX><positionY>16</positionY></TextOverlay><TextOverlay><id>7</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay><TextOverlay><id>8</id><enabled>false</enabled><displayText/><positionX>0</positionX><positionY>0</positionY></TextOverlay></TextOverlayList><DateTimeOverlay><enabled>true</enabled><positionX>16</positionX><positionY>32</positionY><dateStyle>DD-MM-YYYY</dateStyle><timeStyle>24hour</timeStyle><displayWeek>true</displayWeek></DateTimeOverlay><channelNameOverlay><enabled>true</enabled><positionX>512</positionX><positionY>512</positionY></channelNameOverlay></VideoOverlay>"; Возврат ЗапросТекст; КонецФункции |
|||
31
Nikname232
29.07.17
✎
21:28
|
А теперь вопрос следующий, если я данный код запихну во внешнюю компоненту, то 1с думать будет? сейчас на данном этапе где-то 1 - 1,5 секунды 1с думает. как думаете?
|
|||
32
Nikname232
30.07.17
✎
11:19
|
Народ. Хелп
|
|||
33
Сергиус
30.07.17
✎
12:10
|
(31)Во внешней компоненте данный код тебе в любом случае придется переписывать
|
|||
34
Nikname232
30.07.17
✎
23:15
|
(33) Это я знаю. 1с когда передаст параметр для ВК, будет ждать завершения процесса во внешней компоненте, или после передачи сразу продолжит по свому коду?
|
|||
35
Nikname232
30.07.17
✎
23:16
|
Просто хочу понять, есть ли смысл заморачиваться с ВК.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |