2

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

但是当我在诺基亚 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 上运行?

4

1 回答 1

0

我想到了两件事。

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

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

我在开发一款通过服务器上的 PHP 检索并将高分发送到我的网络服务器的游戏时遇到了这个问题。我发现它在我们的大多数测试手机上都能正常工作,而其中一些有问题,这很奇怪。

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

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

一些设备向网络服务器发送特定指令:“你好。请给我一些来自 data.php 的 text/plain 类型的数据”。如果 data.php 包含标题('Content-type: text/plain'),那么一切都很好。如果没有,那么服务器会回复:“对不起,伙计,我在那个地址没有任何文本/简单的东西”。

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

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

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

于 2012-10-19T11:27:32.577 回答