Java me 诺基亚6300出现应用程序错误

Java me 诺基亚6300出现应用程序错误,java-me,midp,Java Me,Midp,我正在使用此代码连接Servlet。尝试访问internet时的移动应用程序 手机中会显示以下消息 “允许网络访问??是或否”。如果我在诺基亚6300中单击“否”,则会出现“应用程序错误”警告,并自动关闭应用程序 我试过其他诺基亚手机,比如N70和N72。手机不会显示“应用程序错误” 是移动问题还是编码问题 有没有有效的方法使用http连接Servlet public static InputStream getDataInputStream(String url, String reques

我正在使用此代码连接Servlet。尝试访问internet时的移动应用程序

手机中会显示以下消息

“允许网络访问??是或否”。如果我在诺基亚6300中单击“否”,则会出现“应用程序错误”警告,并自动关闭应用程序

我试过其他诺基亚手机,比如N70和N72。手机不会显示“应用程序错误”

是移动问题还是编码问题

有没有有效的方法使用http连接Servlet

 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;
}

我不确定这是否有帮助,但请尝试在最后一个块中的HttpConnection之前关闭输出流:

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

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

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

在诺基亚6300上提取
java.lang.Throwable.printStackTrace()
没有好方法,因为它是40系列手机

权限对话框的问题与您的代码无关。为了解决这个问题,您必须了解MIDP安全模型

一部手机的固件中有几个由手机制造商编码的安全域

在每个域中,可以有几个选项来限制对敏感API的访问

当你安装MIDlet时,手机会根据谁信任你签署的证书来决定它属于哪个域。(可以是未签名、受信任的第三方、运营商、制造商……)

运行MIDlet时,每次它尝试使用受限API时,都会应用相应的选项。(可以始终拒绝,每次询问用户,仅询问用户一次,始终允许)

不同的受限API在同一域中可以有不同的选项

因此,您的问题有几种可能的解释:

  • 您对6300和N70的MIDlet进行了不同的签名
  • 6300和n70上的安全域不同
  • 限制HTTP连接的选项在6300和N70上有所不同
  • 移动网络运营商在6300和N70上有所不同

在我看来,这似乎是一个编码问题。尝试捕获Throwable而不是Exception,以查看实际发生的错误