我制作了一个需要互联网连接的应用程序,以便我可以在我的应用程序中显示一些数据。
但是当我在诺基亚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上运行?
答案 0 :(得分:0)
我想到了两件事。
第一个是微不足道的,与手机上的互联网设置有关。我不知道诺基亚C1具体,但我知道很多设备都有设备的互联网设置+ Java的另一个互联网设置。确保Java的Internet设置正确。仅仅因为您可以在手机上使用浏览器,并不意味着Internet连接适用于Java MIDlet。
您可以研究的第二件事是与Content-Type属性有关。
当我开发一个游戏并通过服务器上的PHP将高分数发送到我的网络服务器时,我遇到了这个问题。我发现它在我们的大多数测试手机上工作得很好而且很奇怪,而有些则有问题。
输出手机收到的数据显示404回复(或类似的东西,已经有一段时间了)。
在咨询了另一位JavaME开发人员之后,我了解到了这一点:
有些设备会向网络服务器发送特定说明:“你好。请从data.php获取一些text / plain类型的数据”。 如果data.php包含一个标题('Content-type:text / plain'),那么一切都很好。如果没有,那么服务器回复:“抱歉,我在该地址没有任何文本/简单内容”。
这仅在某些设备上发生,因为只有部分设备会发送特定的请求。
因此,无论您在JavaME部分的setRequestProperty()中定义的Content-Type,在服务器端脚本中都必须相同。
希望这两件事中的一件有所帮助。 : - )