| 
    
        
     
     | 
    
    
  | 
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:admin1234@192.168.1.36/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 
 | 
         
        Просто хочу понять, есть ли смысл заморачиваться с ВК.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |