Я столкнулся со странной проблемой с приложением Android, которое синхронизируется с удаленным сервером.
Чтобы отследить эту проблему, я создал простое приложение, которое выполняет только синхронизацию. Моя функция синхронизации останавливается из-за следующей ошибки (первые две строки — это информация из обратного вызова Zumero, следующее — полное исключение):
Total size: 1626397 bytes
Transferred : 1626392 bytes
Error 300 (sglib)[ZSS 3.3.0.4342 + Android SQLite (libe_sqlite3.so)3.31.13.31.13.31.13.31.1]: Java Exception during network call: java.net.ProtocolException: unexpected end of stream
at com.android.okhttp.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:398)
at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:372)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:248)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:288)
at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zumero.internal.ZumeroUtils.DoNetworkCall(ZumeroUtils.java:167)
src/core/client/zum_http__android_jni.c:214
src/core/client/zum_http__android_jni.c:290
src/core/client/zum_sync.c:7398
src/core/client/zum_sync.c:11963
src/core/client/zum_sync.c:13063
src/core/client/zum_sync.c:13527
Общий размер никогда не бывает одинаковым при каждом вызове, но это может быть связано с некоторой разницей в заголовке. Но передача останавливается за несколько байт до окончания (иногда за несколько байт, иногда больше); иногда передача завершается правильно (скажем, одна синхронизация из десяти/пятнадцати), но я не вижу очевидной корреляции между общим размером и правильным завершением. После этого последующие синхронизации могут завершиться неудачно или не завершиться неудачей даже с небольшими пакетами (например, последние три синхронизации, сделанные пока я пишу этот пост, завершились неудачей с общим размером 1111 байт и переданным размером 1110 байт).
Сервер Zumero — 3.2.1.4172, работает на IIS 8.5.9600.16384 на Windows Server 2012R2; Клиент Zumero — та же версия. Приложение представляет собой пустое приложение для Android, скомпилированное на VS2022.
Конечно, я попробую на одном из наших внутренних серверов, чтобы увидеть, сохраняется ли проблема, и, возможно, предоставить конкретный тестовый пример (я не могу поделиться данными своих клиентов. ..), а также создание того же приложения в Android Studio, хотя это всего лишь тест, перенос всего приложения в Android Studio невозможен.
Это фрагмент кода, который вызывает функцию синхронизации; наличие функции обратного вызова не влияет на результаты, она просто записывает в две первые строки общий/переданный размер пакета.
private string syncAsync()
{
try
{
ZumeroClient.Sync(_dbFile, "", "http://***.***.***.***:1045", REMOTE_SCHEMA, SYNC_SCHEMA, "user", "password", SyncCallback);
return "OK";
}
catch (ZumeroException zEx)
{
return zEx.ToString();
}
catch(Exception genEx)
{
return genEx.ToString();
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... l-the-data
Синхронизация Zumero не может получить все данные ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1718983622
Anonymous
Я столкнулся со странной проблемой с приложением Android, которое синхронизируется с удаленным сервером.
Чтобы отследить эту проблему, я создал простое приложение, которое выполняет только синхронизацию. Моя функция синхронизации останавливается из-за следующей ошибки (первые две строки — это информация из обратного вызова Zumero, следующее — полное исключение):
Total size: 1626397 bytes
Transferred : 1626392 bytes
Error 300 (sglib)[ZSS 3.3.0.4342 + Android SQLite (libe_sqlite3.so)3.31.13.31.13.31.13.31.1]: Java Exception during network call: java.net.ProtocolException: unexpected end of stream
at com.android.okhttp.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:398)
at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:372)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:248)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:288)
at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zumero.internal.ZumeroUtils.DoNetworkCall(ZumeroUtils.java:167)
src/core/client/zum_http__android_jni.c:214
src/core/client/zum_http__android_jni.c:290
src/core/client/zum_sync.c:7398
src/core/client/zum_sync.c:11963
src/core/client/zum_sync.c:13063
src/core/client/zum_sync.c:13527
Общий размер никогда не бывает одинаковым при каждом вызове, но это может быть связано с некоторой разницей в заголовке. Но передача останавливается за несколько байт до окончания (иногда за несколько байт, иногда больше); иногда передача завершается правильно (скажем, одна синхронизация из десяти/пятнадцати), но я не вижу очевидной корреляции между общим размером и правильным завершением. После этого последующие синхронизации могут завершиться неудачно или не завершиться неудачей даже с небольшими пакетами (например, последние три синхронизации, сделанные пока я пишу этот пост, завершились неудачей с общим размером 1111 байт и переданным размером 1110 байт).
Сервер Zumero — 3.2.1.4172, работает на IIS 8.5.9600.16384 на Windows Server 2012R2; Клиент Zumero — та же версия. Приложение представляет собой пустое приложение для Android, скомпилированное на VS2022.
Конечно, я попробую на одном из наших внутренних серверов, чтобы увидеть, сохраняется ли проблема, и, возможно, предоставить конкретный тестовый пример (я не могу поделиться данными своих клиентов. ..), а также создание того же приложения в Android Studio, хотя это всего лишь тест, перенос всего приложения в Android Studio невозможен.
Это фрагмент кода, который вызывает функцию синхронизации; наличие функции обратного вызова не влияет на результаты, она просто записывает в две первые строки общий/переданный размер пакета.
private string syncAsync()
{
try
{
ZumeroClient.Sync(_dbFile, "", "http://***.***.***.***:1045", REMOTE_SCHEMA, SYNC_SCHEMA, "user", "password", SyncCallback);
return "OK";
}
catch (ZumeroException zEx)
{
return zEx.ToString();
}
catch(Exception genEx)
{
return genEx.ToString();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78653228/zumero-sync-fails-to-retrieve-all-the-data[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия