解决办法:
可能是自己代码写的不够多,抑或是对英语实在是没感觉,最近写程序的时候又老是出现写错单词的情况。这个情况出现在class文件中还好,eclipse一般能检测出来,可是这两次都是出现在xml文件中,真是让人抑郁。编译都没有问题,可是运行过程中就会崩溃,而且检查了半天也不知道哪里有毛病,真是把我也搞崩溃了。以后自己一定多注意。
有一个联网下载的需求,带上参数打开一个连接,然后服务器302跳转返回下载地址。
在N72上折腾了好几天。。。最后终于查到 原来是N72 KVM的bug。。。
参考:
具体连接请参考:
标题为:
KVM crashes when reading content with HTTP "302 Found" response on N90 and 6680(http://discussion.forum.nokia.com/forum/showthread.php?t=77062)
KIJ000660(http://wiki.forum.nokia.com/index.php/KIJ000660_-_getHeaderField%28%22Location%22%29_returns_null_in_S60_devices)
关键词
详细描述
当用HttpConnection读取远端数据,而远端返回状态码302表示重定向时,继续调用openInputStream来读取输入流将会导致程序崩溃。
此种现象发生在以下机型:
Nokia N90/
6600/6630/6680。
N70不会崩溃但也不会正常运行。
根据协议规定,此时的Location头域中保存了你应该重新请求的地址。
请看
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3 来了解更多关于"302 Found"。
也就是说,此时用HttpConnection.getHeaderField("Location")来得到具体的跳转url,然后重新向新地址发起请求。
代码示范:
private HttpConnection open(String url) throws IOException {
HttpConnection c;
int status = -1;
// Open the connection and check for redirects
while (true) {
c = (HttpConnection) Connector.open(url);
// Get the status code,
// causing the connection to be made
status = c.getResponseCode();
if ((status == HttpConnection.HTTP_TEMP_REDIRECT)
|| (status == HttpConnection.HTTP_MOVED_TEMP)
|| (status == HttpConnection.HTTP_MOVED_PERM)) {
// Get the new location and close the connection
url = c.getHeaderField("location");
c.close();
} else {
break;
}
}
// Only HTTP_OK (200) means the content is returned.
if (status != HttpConnection.HTTP_OK) {
c.close();
throw new IOException("Response status not OK");
}
return c;
}
http://www.cnblogs.com/zhengyun_ustc/archive/2006/07/24/nokiahttpconnection302.html