Почему кодовое имя REST выдает мне слишком длинное имя файла? - PullRequest
0 голосов
/ 12 февраля 2019
java.io.FileNotFoundException: /Users/jamesagada/.cn1/cn1ConCache/aHR0cHM6Ly96aWVtb3ppLWEzZWYucmVzdGRiLmlvL3Jlc3QvemllbW96aS11c2Vycz9maWx0ZXI9JnE9JTdCJTIycGhvbmUlMjIlM0ElMjAlMjIwODAzNDAyMTI2OCUyMiUyMCUyQyUyMnBhc3N3b3JkJTIyJTNBJTIwJTIydHdhbGElMjIlMjAlN0QmbWV0YWZpZWxkcz10cnVlJm1heD0xMCZoPSU3QiUyMiUyNG9yZGVyYnklMjIlM0ElN0IlMjJfY3JlYXRlZCUyMiUzQSUyMC0xJTIwJTdEJTdEJnNraXA9MCZmZXRjaENoaWxkcmVuPXRydWU=

(слишком длинное имя файла) в java.io.FileOutputStream.open0 (собственный метод) в java.io.FileOutputStream.open (FileOutputStream.java:270) в java.io.FileOutputStream. (FileOutputStream.java:213), java.io.FileOutputStreamFileSystemStorage.java:274) на com.codename1.io.ConnectionRequest.performOperation (ConnectionRequest.java:792) на com.codename1.io.NetworkManager $ NetworkThread.run (NetworkManager.java:282) на com.codename1.impl.CodenameOneThread.run (CodenameOneThread.java:176) [Сетевой поток] 0: 0: 19,345 - Исключение: java.io.IOException - Поток закрыт java.io.IOException: Поток закрыт в com.codename1.io.BufferedInputStream.getInIfOpen (BufferedInputStream.Java: 140) на com.codename1.io.BufferedInputStream.read1 (BufferedInputStream.java:338) на com.codename1.io.BufferedInputStream.read (BufferedInputStream.java: 445) в com.codename1.io.BufferedInputStream.read (BufferedInputStream.java:668) в com.codename1.io.Util.copyNoClose (Util.java:136) в com.codename1.io.Util.copyNoClose (Util.Java: 122) на com.codename1.io.Util.copy (Util.java:157) на com.codename1.io.Util.copy (Util.java:111) на com.codename1.io.Util.readInputStream (Util.java: 206) по адресу com.codename1.io.ConnectionRequest.readResponse (ConnectionRequest.java:1308) по адресу com.codename1.io.ConnectionRequest.performOperation (ConnectionRequest.java:797) по адресу com.codename1.io.NetworkManager $ NetworkThread.выполнить (NetworkManager.java:282) в com.codename1.impl.CodenameOneThread.run (CodenameOneThread.java:176)

Это ошибка, которую я получаю при использовании REST для доступа к URL.Я не могу придумать ни одной причины, почему.Я заметил, что это происходит, когда указаны некоторые параметры запроса, но сервер возвращает действительные результаты.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Только что получил ту же проблему и обнаружил, что ConnectionRequest вызывает внутреннее исключение, которое я могу найти только при тестировании в симуляторе.URL-адрес, который передается в запрос, закодирован в base64, поэтому он становится слишком длинным именем файла.Установка режима кэширования для каждого ConnectionRequest не имеет никакого эффекта.Таким образом, единственный обходной путь - использовать setDefaultCacheMode.Я надеюсь протестировать следующий выпуск.

0 голосов
/ 13 февраля 2019

Это потому, что режим кэширования по умолчанию для ConnectionRequest - интеллектуальное кэширование.Поэтому мы пытаемся сохранить содержимое соединения для последующего поиска.Это игнорирует тот факт, что файловая система Windows FAT имеет ограничения на длину файла.Это исправлено для предстоящего обновления и будет ограничивать имя файла 255 символами, которые должны работать.Обновление также добавит API cacheMode(ConnectionRequest.CachingMode) в класс RequestBuilder, чтобы вы могли настроить кэширование на индивидуальном уровне.

В качестве временного решения вы можете отключить кэширование глобально, используя:

ConnectionRequest.setDefaultCacheMode(ConnectionRequest.CachingMode.OFF);
...