在诺基亚c1-01中,J2ME-App无法与互联网连接

时间:2012-10-18 05:46:27

标签: java-me nokia midp

我制作了一个需要互联网连接的应用程序,以便我可以在我的应用程序中显示一些数据。

但是当我在诺基亚c1-01中测试我的应用程序时,它无法从我的服务器获取数据,同时如果我在任何其他设备上检查我的应用程序,他们很容易与互联网连接,我可以看到我的应用程序

这是我的代码:

    HttpConnection httpConn = null;

    InputStream is = null;
    OutputStream os = null;
    StringBuffer sb = new StringBuffer();

    try {
        // Open an HTTP Connection object
        httpConn = (HttpConnection) Connector.open(url);
        // Setup HTTP Request to POST
        httpConn.setRequestMethod(HttpConnection.POST);

        httpConn.setRequestProperty("User-Agent",
                "Profile/MIDP-2.0 Confirguration/CLDC-1.1");
        httpConn.setRequestProperty("Accept_Language", "en-US");
        //Content-Type is must to pass parameters in POST Request
        httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        os = httpConn.openOutputStream();



        os.write(params.getBytes());

        /**Caution: os.flush() is controversial. It may create unexpected behavior
        on certain mobile devices. Try it out for your mobile device **/
        //os.flush();
        // Read Response from the Server
        //StringBuffer sb = new StringBuffer();
        is = httpConn.openDataInputStream();
        int chr;
        while ((chr = is.read()) != -1) {
            sb.append((char) chr);
        }
    } finally {
        if (is != null) {
            is.close();
        }
        if (os != null) {
            os.close();
        }
        if (httpConn != null) {
            httpConn.close();
        }
    }

我必须在代码中更改哪些内容才能在我的诺基亚C1-01上运行?

1 个答案:

答案 0 :(得分:0)

我想到了两件事。

第一个是微不足道的,与手机上的互联网设置有关。我不知道诺基亚C1具体,但我知道很多设备都有设备的互联网设置+ Java的另一个互联网设置。确保Java的Internet设置正确。仅仅因为您可以在手机上使用浏览器,并不意味着Internet连接适用于Java MIDlet。

您可以研究的第二件事是与Content-Type属性有关。

当我开发一个游戏并通过服务器上的PHP将高分数发送到我的网络服务器时,我遇到了这个问题。我发现它在我们的大多数测试手机上工作得很好而且很奇怪,而有些则有问题。

输出手机收到的数据显示404回复(或类似的东西,已经有一段时间了)。

在咨询了另一位JavaME开发人员之后,我了解到了这一点:

有些设备会向网络服务器发送特定说明:“你好。请从data.php获取一些text / plain类型的数据”。 如果data.php包含一个标题('Content-type:text / plain'),那么一切都很好。如果没有,那么服务器回复:“抱歉,我在该地址没有任何文本/简单内容”。

这仅在某些设备上发生,因为只有部分设备会发送特定的请求。

因此,无论您在JavaME部分的setRequestProperty()中定义的Content-Type,在服务器端脚本中都必须相同。

希望这两件事中的一件有所帮助。 : - )