手机切换接入点需要处理什么?

xiexie777 2009-10-19 05:35:08
以下代码省略了次要代码:
——————————————————————————————
conn = (HttpConnection) Connector.open(request, Connector.READ,true);
conn.setRequestMethod(HttpConnection.GET);
conn.setRequestProperty("User-Agent", System.getProperty("microedition.profiles"));
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
conn.setRequestProperty("Accept","*/*");
conn.setRequestProperty("Content-Length",Integer.toString( postData != null?postData.length : 0 ) );
if (isProxy) {
conn.setRequestProperty("X-Online-Host", host + ":" + port);
}
if (HttpConnection.POST.equals(method) && postData != null) {
OutputStream outputstream = conn.openOutputStream();
outputstream.write(postData);
outputstream.flush();
outputstream.close();
}
responseCode = conn.getResponseCode();
——————————————————————————————
说明下运行情况:
如果在程序一开始之后选择一个接入点:cmwap or cmnet or WLAN 连接,一切运行正常,
但是如果在运行之中把接入点更换一下,程序就会报错,根据我真机调试后的结果是 responseCode = conn.getResponseCode()抛空指针异常;
另外说明:我是每次连接都启一个新的连接;
测试机型:NokiaN78,LGKP500,三星i458,均表现如此
...全文
322 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiexie777 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kf156 的回复:]
能否将加上了Log后的代码贴出来看看
try {
  conn.getResponseCode();
} catch (Exception ex) {
  Log.log(ex.toString());
}

这代码会抛空指针应该就是conn==null了
想确认下是不是前边的代码有可能导致conn赋值失败或被置null了。
[/Quote]
谢谢你这么热心,分全给你了,conn不为null
kf156 2009-10-21
  • 打赏
  • 举报
回复
能否将加上了Log后的代码贴出来看看
try {
conn.getResponseCode();
} catch (Exception ex) {
Log.log(ex.toString());
}

这代码会抛空指针应该就是conn==null了
想确认下是不是前边的代码有可能导致conn赋值失败或被置null了。
xiexie777 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kf156 的回复:]
引用 6 楼 xiexie777 的回复:
晕,这不是C++开发,是j2me啊;
我还真没听说J2me能获取到用户选择了哪个接入点;
还有我的不是3种联网方式,是手机有几种,程序就有几种,而且都是能是联网成功的,软件正常使用,证明对于不同的接入点程序是能兼容的;
我的提问是“在使用过程中(没有退出程序重新选择)切换了切入点,为什么responseCode = conn.getResponseCode(); 会抛异常”,


J2ME是不能获取到用户选择的接入点。只能通过代码来判断走的是直连还是代理。

你说你切换接入点时,是通过连接管理里断开的方式来实现,而此时程序还在联网过程中抛出异常是正常的
不过此时应该抛出一个IO异常,而不是空指针异常
LZ确定这空指针是conn.getResponseCode()抛出的吗?又是如何确认的?
[/Quote]
try {
conn.getResponseCode();
} catch (Exception ex) {
Log.log(ex.toString());
}
为了测试,特意每句Log下来,查到的
kf156 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiexie777 的回复:]
晕,这不是C++开发,是j2me啊;
我还真没听说J2me能获取到用户选择了哪个接入点;
还有我的不是3种联网方式,是手机有几种,程序就有几种,而且都是能是联网成功的,软件正常使用,证明对于不同的接入点程序是能兼容的;
我的提问是“在使用过程中(没有退出程序重新选择)切换了切入点,为什么responseCode = conn.getResponseCode(); 会抛异常”,
[/Quote]

J2ME是不能获取到用户选择的接入点。只能通过代码来判断走的是直连还是代理。

你说你切换接入点时,是通过连接管理里断开的方式来实现,而此时程序还在联网过程中抛出异常是正常的
不过此时应该抛出一个IO异常,而不是空指针异常
LZ确定这空指针是conn.getResponseCode()抛出的吗?又是如何确认的?
xiexie777 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gesanri 的回复:]
引用 4 楼 xiexie777 的回复:
引用 3 楼 kf156 的回复:
我是问,是代码上的切换,还是手机设置的切换?
如果是手机设置的切换,这又是哪设置的?

当然是手机切换了,j2me又不能切换接入点;
当连接管理断网就能切换了


j2me不能切换接入点?为什么?你传个boolean变量根据用户的选择来改变boolean的值不就能换了?你这有3种接入方式就用byte
[/Quote]
晕,这不是C++开发,是j2me啊;
我还真没听说J2me能获取到用户选择了哪个接入点;
还有我的不是3种联网方式,是手机有几种,程序就有几种,而且都是能是联网成功的,软件正常使用,证明对于不同的接入点程序是能兼容的;
我的提问是“在使用过程中(没有退出程序重新选择)切换了切入点,为什么responseCode = conn.getResponseCode(); 会抛异常”,
gesanri 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiexie777 的回复:]
引用 3 楼 kf156 的回复:
我是问,是代码上的切换,还是手机设置的切换?
如果是手机设置的切换,这又是哪设置的?

当然是手机切换了,j2me又不能切换接入点;
当连接管理断网就能切换了

[/Quote]
j2me不能切换接入点?为什么?你传个boolean变量根据用户的选择来改变boolean的值不就能换了?你这有3种接入方式就用byte
xiexie777 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kf156 的回复:]
我是问,是代码上的切换,还是手机设置的切换?
如果是手机设置的切换,这又是哪设置的?
[/Quote]
当然是手机切换了,j2me又不能切换接入点;
当连接管理断网就能切换了
kf156 2009-10-19
  • 打赏
  • 举报
回复
我是问,是代码上的切换,还是手机设置的切换?
如果是手机设置的切换,这又是哪设置的?
xiexie777 2009-10-19
  • 打赏
  • 举报
回复
比如cmnet切换到WLAN,或者cmwap切换到cmnet
kf156 2009-10-19
  • 打赏
  • 举报
回复
在运行之中把接入点更换一下

这里说的接入点更换是指什么操作?

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧