2009-08-25 74 views
2

我在J2ME中开发了一个简单的应用程序。应用程序只是简单的HttpConnection,并只提出要求。这里是代码为:j2me应用程序无法在移动电话上工作

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.你有什么建议吗?

回答

1

的问题是,在一些实施中,应用程序甚至可能不发送请求,直到你调用connection.getResponseCode()方法。尝试在打开InputStream或OutputStream之前调用getResponseCode()方法

+0

你好拉姆。我尝试过调用getResponseCode()函数。但是我的问题仍然存在,我无法在诺基亚5310上正常执行。但是我在诺基亚3110 Classic中获得了完美的结果。如果您有...请提供任何解决方案..谢谢.. – Nirmal 2009-08-26 12:55:48

+0

#1也不要尝试覆盖用户代理标头。由于某些设备在设置User-Agent标头时会引发异常。尝试评论该行。 #2当你正在做一个GET请求时,你通常会打开一个InputStream而不是OutputStream – Ram 2009-08-26 13:27:41

+0

Hello Ram,谢谢你的回复..我做了两个更改但仍然没有得到正确的输出..我不知道wt要做...无论如何要直接在移动设备上调试应用程序? – Nirmal 2009-08-26 13:49:23

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(); 
+0

其实我不想从URL接收任何数据。我只想发送请求到我的网址。否则将只通过该URL完成...我的应用程序在诺基亚3110 Classic中正常工作。但没有在诺基亚5310上工作。你有什么建议吗? – Nirmal 2009-08-25 10:21:23

+0

您确定这不仅仅是一个权限问题?启动数据连接通常受到限制。每次连接时,我的手机都会问我。 – wvdschel 2009-08-25 12:11:08

+0

是的,这不是一个权限问题。事实上,应用程序正在完美运行诺基亚3110 ..所以,它必须是其他一些问题.. Plz建议任何解决方案,如果你有.. – Nirmal 2009-08-26 09:16:52

0

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

相关问题