2

我在 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 发送请求。否则只能通过该 URL 完成...我的应用程序在诺基亚 3110 Classic 中运行良好。但它不适用于诺基亚 5310。您有什么建议吗?

4

3 回答 3

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(); 
于 2009-08-25T10:12:10.243 回答
1

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

于 2009-08-25T16:04:18.580 回答
0

我在诺基亚 E 系列 (E51) 上遇到了同样的问题,该代码在 Sun Simulator 中运行良好,但是尝试在应用程序管理器中设置您的应用程序/MIDlets 默认访问点,这可能会解决您的问题。转到安装 -> 应用程序。管理器->打开您的应用程序名称,更改查看->为您的应用程序选择接入点

于 2010-08-04T21:32:34.780 回答