Проблема запуска приложения Blackberry без BES - PullRequest
3 голосов
/ 23 октября 2009

Я занимаюсь разработкой приложения для Blackberry, которое работает в сети, используя HttpConnections и InputStreams. Я тестировал его в среде, где у него есть доступ к BES, но я буду демонстрировать его только с беспроводной связью.

Некоторые предварительные испытания Bold 9000 показывают, что, хотя веб-браузер телефона может выходить в Интернет, мое приложение не может. Насколько я понимаю, BES обычно обрабатывает большую часть логики работы в сети, и что сама Blackberry не очень хороша в этом.

Я видел некоторые ссылки на необходимость добавления "; interface = wifi" к URL-адресам, к которым я пытаюсь подключиться, но когда я это делаю, постепенная загрузка большого файла фильма через несколько секунд зависает.

Что еще можно сделать, чтобы приложение Blackberry работало только с беспроводной связью? Есть ли у меня подписанные классы, которые могли бы справиться с этим?

Редактировать

Похоже, что происходит то, что есть редкий шанс, что сеть просто не работает - General Socket Exception. Проблема в том, что для больших файлов я делаю много соединений, кусками по 256 Кб, поэтому для больших файлов возникает большая проблема из-за ошибки в конечном итоге. Я действительно не уверен, как справиться с этим.

Редактировать

Я использовал обходной метод с моим Connector.open, используя версию .open, которая имеет опцию тайм-аута. Если какой-то конкретный сетевой вызов никогда не возвращается, что было моей проблемой, кроме Исключений, то он повторяется через несколько секунд. Это также относится и к исключениям. В лучшем случае это временное исправление, и если кто-нибудь знает, как улучшить производительность сети, отличной от BES, я бы хотел услышать об этом.

1 Ответ

2 голосов
/ 26 октября 2009

Простым решением будет проверка статуса покрытия WiFi

public boolean GetWiFiCoverageStatus()  {
    if((WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) &&
              RadioInfo.areWAFsSupported(RadioInfo.WAF_WLAN)) {
              // this.connectionString += ";interface=wifi";
              return true;
    } else return false;           
}

Это обеспечит установление соединения, только если устройство подключено к точке доступа.

Редактировать:

Вторая вещь, которую вы должны проверить, это запись базы знаний (HTTP 413 Request Entity Too Large)

Третье дополнение: Вы использовали; deviceside = true в строке подключения? без бэкэнда MDS вы должны использовать это приложение для обеспечения нормального соединения TCP / IP

...