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