我在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上运行。你有什么建议吗?
答案 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;为您选择接入点应用