j2me应用程序不适用于移动电话

时间:2009-08-25 10:08:31

标签: java java-me midp

我在J2ME中开发了一个简单的应用程序。应用程序只执行简单的HttpConnection并且只提出请求。这是代码:

 public void run() {
    System.out.println("Inside saveData");
    HttpConnection hc = null;
    OutputStream dout = null;
   try {
        System.out.println("custName = " + custName);
        System.out.println("prodName = " + prodName);
        System.out.println("qty = " + qty);

        hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=" + custName + "&prodName=" + prodName + "&qty=" + qty);
        //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName=Custtt51&prodName=Proddd52&qty=53");
        //hc = (HttpConnection) Connector.open("http://www.sufalamtech.com/demo/mobile/test.php?custName="+custName+"&prodName="+prodName+"&qty="+qty);

        hc.setRequestProperty("User-Agent", "Profile/MIDP-2.1 Configuration/CLDC-1.1");
        hc.setRequestMethod(HttpConnection.GET);
        dout = hc.openOutputStream();

    } catch (Exception e) {
        System.out.println("Error... = " + e);
    } finally {
        try {
            if (dout != null) {
                dout.close();
            }

            if (hc != null) {
                hc.close();
            }
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }

这在PC(模拟器)中工作正常。但是当我在诺基亚5310上部署.jar文件时,它并没有从HttpConnection返回任何内容。

实际上我不想从URL接收任何数据。我只想向我的网址发送请求。否则将只通过该URL完成...我的应用程序在诺基亚3110 Classic中运行良好。但它无法在诺基亚5310上运行。你有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您需要使用连接的输入流,而不是输出流。像这样(未经测试)。

    if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
        int length = (int)hc.getLength();
        InputStream is = hc.openInputStream();
        content = new byte[length];
        int read = 0;
        while (read < length) {
            int r = is.read(content, read, length - read);
            if (r < 0) {
                break;
            }
            read += r;
        }
        is.close();
    }
    hc.close(); 

答案 1 :(得分:1)

问题在于,在某些实现中,在您调用connection.getResponseCode()方法之前,您的应用程序甚至可能不会发送请求。尝试在打开InputStream或OutputStream

之前调用getResponseCode()方法

答案 2 :(得分:0)

我在诺基亚E系列(E51)上遇到同样的问题,代码在Sun Simulator中完美运行,但是尝试在应用程序管理器中设置应用程序/ MIDlet defalut访问点,这可能会解决您的问题。转到安装 - &gt;应用。经理 - &gt;打开您的应用名称,更改发布 - &gt;为您选择接入点应用