Приложение Blackberry работает в симуляторе, но не на устройстве - PullRequest
0 голосов
/ 09 июня 2010

Я читал некоторые похожие посты на этом сайте, которые касаются того же вопроса, и ответы на самом деле, кажется, не проясняют ситуацию для меня.

Мое приложение отлично работает в симуляторе. Я считаю, что я на Bold 9000 с OS 4.6. Приложение подписано.

Мое приложение выполняет HTTP-вызов через 3G для получения результата XML. тип это application / xhtml + xml. В устройстве это не выдает ошибки. это не делает никаких визуальных признаков ошибки. Я говорю try catch для вывода результатов на экран и ничего не получаю. HttpConnection был взят прямо из демоверсий и отлично работает в симе.

Поскольку это не дает ошибок, я начинаю размышлять над тем, что вспоминаю, когда читал в начале проекта. deviceside = верно? Что-то вроде того? Мой запрос просто HttpConnection connection = (HttpConnection) Connector.open (url); где URL это просто стандартный URL, не получить переменные. Исходя из количества времени, в течение которого я вижу стрелки соединения в углу экрана, я предполагаю, что приложение запускает исходное соединение с моим сервером, затем либо получает неверный результат, либо получает результаты, а постоянное хранилище не работает как ожидается.

Понятия не имею, с чего начать. Публикация кода была бы нелепой, поскольку это было бы в основном все мое приложение.

Полагаю, мой вопрос: кто-нибудь знает о каких-либо серьезных различиях между устройством и симулятором, которые могут привести к сбою соединения типа http или постоянного хранилища? Настройка сборки? Ограничение ОС? Любая стандартная процедура, о которой я, возможно, не знал, что каждый должен сделать перед началом тестирования устройства?

Спасибо

Ответы [ 4 ]

3 голосов
/ 09 июня 2010

Просто предоставление URL не будет работать. Вам нужно будет добавить некоторую информацию после URL, чтобы определить способ транспорта, который будет использовать ваше HTTP-соединение. Например, http://example.com;deviceside=true будет использовать DirectTCP (вам также может потребоваться предоставить информацию APN, но она сохраняется на устройстве для моего телефона). http://example.com;interface=wifi будет использовать Wi-Fi. На OS 5 есть класс ConnectionFactory, который делает это намного проще. Вот ссылка , которая более подробно описана.

1 голос
/ 23 июля 2010

Это был тяжелый для меня! Как сказал Джонатан, вы должны указать некоторые параметры в URL, чтобы он работал на устройстве. Вы не должны делать это вручную, но вместо этого используйте ConnectionFactory.

Как вы понимаете, это только заставит это работать, но это не так!

Реальная проблема заключается в том, что не URL был изменен , потому что он имеет: interface = wifi; deviceside = true (в моем случае). В зависимости от того, какой веб-сервер принимает ваш запрос, это может нарушить код.

Решение, которое я пробовал и которое работает, состоит в том, чтобы попытаться использовать поддельный параметр, такой как

&foo=true -> &foo=true;deviceside=true

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

На симуляторе это работает без этого дополнительного кода, потому что за ним есть сервер BIS для вас. На устройстве (как в моем случае) нет, потому что я использую девелоперское устройство незарегистрированное и без SIM (просто wifi).

Другой момент заключается в том, что класс HttpConnection не обрабатывает HTTP 302 Redirect, и если он у вас есть, вы должны обрабатывать его вручную.

0 голосов
/ 11 июня 2010

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

На прошлой неделе я работал над этим сетевым вопросом в нашем приложении, и это действительно сложно, как отмечали некоторые другие.Вот две ссылки, которые действительно помогли нам использовать HTTP на разных устройствах, особенно на старых устройствах, которые не предоставляют ConnectionFactory.

http://supportforums.blackberry.com/t5/Java-Development/Connecting-your-BlackBerry-http-and-socket-connections-to-the/td-p/206242

Первая содержит несколько примеров кода, включая демонстрациюзапрос системных классов ServiceBook и CoverageInfo для принятия решения о том, какой тип соединения будет работать.

0 голосов
/ 10 июня 2010

Возможно, проблема в том, что APN не указан.Подробности см. В моем ответе на этот вопрос: потоковое видео по http в blackberry

...