Произошла ошибка приложения в Nokia 6300

Я использую этот код для подключения сервлета. Мобильное приложение при попытке доступа в интернет.

Следующее сообщение появляется в мобильном телефоне.

Msgstr "Разрешить доступ к сети - да или нет". Если я нажму "нет" для этого сообщения в Nokia 6300, появится предупреждение "Ошибка приложения", и приложение автоматически закроется.

Я пробовал другие мобильные телефоны Nokia, такие как N70 и N72. Мобильный телефон не будет отображать "Ошибка приложения".

Это мобильная проблема или проблема кодирования?

Есть ли эффективный способ подключения сервлета с помощью http?

 public static InputStream getDataInputStream(String url, String request) 
 {
    HttpConnection httpConnectionObj = null;

    OutputStream dataOutputStreamObj = null;

    try {
        httpConnectionObj = (HttpConnection) Connector.open(url, Connector.READ_WRITE);

        httpConnectionObj.setRequestMethod(HttpConnection.POST);

        dataOutputStreamObj = httpConnectionObj.openOutputStream();

        dataOutputStreamObj.write(request.getBytes());

        dataOutputStreamObj.close();

        return httpConnectionObj.openInputStream();

    } catch (javax.microedition.io.ConnectionNotFoundException cnfe) {
      //Alert
    } catch (Exception ex) {
      //Alert
    } finally {
        try {
            if (httpConnectionObj != null) {
                httpConnectionObj.close();
                httpConnectionObj = null;
            }

        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
    return null;
}

2 ответа

Нет хорошего способа извлечь java.lang.Throwable.printStackTrace() на Nokia 6300, так как это телефон Series40.

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

Данный телефон имеет несколько доменов безопасности, закодированных в его прошивке производителем телефона.

В каждом домене может быть несколько вариантов ограничения доступа к чувствительному API.

Когда вы устанавливаете мидлет, телефон решает, к какому домену он принадлежит, основываясь на том, кому доверяет сертификат, с которым вы его подписали. (может быть без знака, доверенное третье лицо, оператор, производитель...)

Когда вы запускаете мидлет, каждый раз, когда он пытается использовать ограниченный API, применяется соответствующая опция. (Можно всегда отрицать, спрашивать пользователя каждый раз, спрашивать пользователя только один раз, всегда разрешать).

Различные ограниченные API могут иметь разные параметры в одном домене.

Поэтому есть несколько возможных объяснений вашей проблемы:

  • Вы подписали мидлет по-разному для 6300 и N70.
  • Домены безопасности разные на 6300 и n70.
  • Возможность ограничить HTTP-соединение отличается на 6300 и N70.
  • Оператор мобильной сети отличается на 6300 и N70.

Я не уверен, что это поможет, но попробуйте закрыть поток вывода перед HttpConnection в блоке finally:

    } finally {
        try {
            if (dataOutputStreamObj != null)
                dataOutputStreamObj.close();
            dataOutputStreamObj = null;

            if (httpConnectionObj != null)
                httpConnectionObj.close();
            httpConnectionObj = null;

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
Другие вопросы по тегам