自中国移动启动上网资费页面提醒后,导致了很多的J2ME联网出现了联不上服务器的问题。即在j2me程序中启动联网后,在有些地区,有些时候,移动网关会把我们的请求截下,返还一个资费提醒的页面给我们,这样我们的服务器将不会收到我们的请求,导致程序出现联网失败的错误。
因此我们在处理网络连接时要加入对移动资费页面的处理,我们可以在发送网络请求后,对返回的response进行http头的检测,如果我们检测到返回的content-type是text/vnd.wap.wml,我们可以扔掉这个response,重新发起一次请求就可以解决资费页面的问题,或者我们也可以提取出资费页面里面的请求地址,再次发送一次请求。
处理的代码如下:
httpConn = (HttpConnection) Connector.open (url, permissions, true);
String s=httpConn.getHeaderField("Content-Type");
if(s.equals("text/vnd.wap.wml")){
//重新发起一次请求
httpConn = (HttpConnection) Connector.open (url, permissions, true);
}
如果程序本来要返回的类型就是WAP页面,那我们可以对WAP页面的内容进行关键字解析来判断是自己服务器返回的页面还是移动返回的资费提醒页面再进行处理。