|   |   | 
| 
 | Обмен мобильные-сервер: ошибка разбора XML [1,1] - часто возникает, как бороть? | ☑ | ||
|---|---|---|---|---|
| 0
    
        dave2000 22.12.16✎ 13:00 | 
        Платформа сервера 1С 8.3.7.1917
 Платформа мобильных: 8.3.5.109 Есть самописные обмены между базами и мобильными устройствами (стандартный handshake xml-обмен, описан тут: http://fs.kursypo1c.ru/free/FM-MobilePlatform/Module03/mobile-apps-fm-theory-module03.pdf). Обмены в целом работают стабильно, но при попытке передчи данных с мобильного на сервер возникает "Ошибка разбора XML [1,1] - Extra content at the end of the document". Т.е. какого-то фёдора на сервер попадет пустая XML, чего в принципе быть не должно (даже в пустом пакете будет минимум пару тегов). Если бывают проблемы со связью (нет инета), то и соединение с сервером (создание прокси) вовсе не происходит. А так прокси создаётся нормально, ошибка возникает уже при передаче данных серверу. Кто что думает? Где искать причину - на мобильных устройствах или на сервере? Такое впечатление, что после установки соединения потом рубается связь. ЗЫ: Если нужны куски кода, выложу. | |||
| 1
    
        lubitelxml 22.12.16✎ 13:14 | 
        Платформы менять пробовал?     | |||
| 2
    
        dave2000 22.12.16✎ 13:21 | 
        (1) Только мобильные платформы меняли (8.3.6) - ситуация осталась. Серверную пока не трогали. Есть вероятность, что это сервер так куралесит?     | |||
| 3
    
        lubitelxml 22.12.16✎ 13:28 | 
        (2) может, 8.3.7 помниться глючная была     | |||
| 4
    
        mobile-1c 22.12.16✎ 13:54 | 
        были такие ошибки. попробуй убрать в обмене все объекты и последовательно найди тот объект который мешает обмену. возможно разная структура объекта проверь это.     | |||
| 5
    
        dave2000 22.12.16✎ 14:02 | 
        (4) С объектами все гуд, при разной структуре ругнётся на середину файла, а тут он со старта пустой [1,1]. Да и при разной структуре у нас проверка стоит, сразу ловится реквизит и объект которые не совпадают.
 (3) Какую платформу посоветуете ставить, какая наиболее стабильная? | |||
| 6
    
        Dilgorp 22.12.16✎ 14:09 | 
        (0) Такая ошибка часто возникает, если вместо XML приходит HTML (ошибки авторизации, права и т.д.). Дело не в платформе.     | |||
| 7
    
        Dilgorp 22.12.16✎ 14:11 | 
        Пример того что может прийти вместо XML
 <html> <head><title> A server error occurred. </title></head> <h1> Аутентификация пользователя не выполнена. </h1> <hr/> An error occurred processing this request.</html> | |||
| 8
    
        lubitelxml 22.12.16✎ 14:33 | 
        (6) так вроде у него обмен падает не всегда. Как с одной парой логин\пароль может иногда не пускать?     | |||
| 9
    
        Dilgorp 22.12.16✎ 14:49 | 
        (8) авторизация это одна из возможных причин, нужно смотреть что в таких случаях приходит     | |||
| 10
    
        dave2000 22.12.16✎ 15:07 | 
        Код в мобильном приложении:
 Функция ВыполнитьОбменДанными(ТекстОшибки = "") Экспорт Прокси = ПолучитьПрокси(); Если Прокси = Неопределено Тогда ТекстОшибки = "Не удалось установить соединение."; Возврат Ложь; КонецЕсли; ....... // Отправляем данные ДанныеОбмена = ОбменСервер.СформироватьПакетОбмена(ЦентральныйУзел, Прокси); <------- Здесь пакет ХML успешно формируется Прокси.ЗаписатьДанные(ИмяУстройства, ДанныеОбмена); <--------- ВОТ ЗДЕСЬ НА СЕРВЕРЕ ПРОИСХОДИТ ИСКЛЮЧЕНИЕ // Принимаем данные ДанныеОбмена = Прокси.ПолучитьДанные(ИмяУстройства); ОбменСервер.ПринятьПакетОбмена(ЦентральныйУзел, ДанныеОбмена); // Отправляем еще раз для снятия регистрации в ЦБ ДанныеОбмена = ОбменСервер.СформироватьПакетОбмена(ЦентральныйУзел, Прокси.ЗаписатьДанные(ИмяУстройства, ДанныеОбмена); Возврат Истина; КонецФункции | |||
| 11
    
        dave2000 22.12.16✎ 15:14 | 
        Код веб-сервиса ЗаписатьДанные() на стороне сервера:
 Функция ЗаписатьДанные(ИмяУстройства, ДанныеМобильногоПриложения) УзелОбмена = ПланыОбмена.МобильноеПриложениеКонтрольКультур.НайтиПоКоду(ИмяУстройства); Если УзелОбмена.Пустая() Тогда ТекстИсключения = НСтр("ru='Неизвестное устройство: '") + ИмяУстройства; ВызватьИсключение(ТекстИсключения); КонецЕсли; СообщениеОбмена = ДанныеМобильногоПриложения.Получить(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СообщениеОбмена); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML); //^^^^^ ВОТ НА ЭТОМ УЧАСТКЕ ВЫЛЕТАЕТ, ошибка разбора XML [1,1] //............ //............ //............ КонецФункции | |||
| 12
    
        dave2000 22.12.16✎ 15:15 | 
        (11) PS: параметр ДанныеМобильногоПриложения имет тип ХранилищеЗначения     | |||
| 13
    
        dave2000 22.12.16✎ 15:19 | 
        Получается, что на стороне мобильного успешно формируется XML, а на стороне сервера уже почему-то пустая строка. Как такое может быть?     | |||
| 14
    
        Dilgorp 22.12.16✎ 16:59 | 
        (13) нужно смотреть что на самом деле получает сервер (записать СообщениеОбмена в файл, использовать отладку, записать в виде строки в любое хранилище).     | |||
| 15
    
        DitriX 22.12.16✎ 18:47 | 
        версия стационарной какая? и она скульная?     | |||
| 16
    
        dave2000 22.12.16✎ 18:56 | 
        (15) > Платформа сервера 1С 8.3.7.1917 
 Да, она SQL | |||
| 17
    
        DitriX 22.12.16✎ 19:02 | 
        угу, уходи от скуля или обновись. Это баг стационарный я с 1С вместе его ловил долго. Они даже воспроизвести его не могли. Короче, весело было.
 В 8.3.8 вроде уже исправили его. А баг проявлялся только на скуле, изредка, при определнных размерах пакета, от 100кб до 200кб, вроде, не помню уже. | |||
| 18
    
        dave2000 22.12.16✎ 21:47 | 
        (17) Спасибо, попробую на тестовый последнюю 8.3.8.2167 поставить, погоняем, посмотрим     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |