很急!!!程序在MOTOROLA模拟器上调试成功,但一发到手机上不成功,高手们帮看看吧(附程序下载地址)

whxxr 2005-02-20 03:34:04
程序采用HTTPCONNECTION链接到网站,用的是MOTO V220的手机.用MOTO的模拟器中的V220和V303都可调试成功.但是一发送到手机上就不行.各位帮忙看看是程序代码的问题还是手机设置的问题.

MOTO手机中在'访问网络'-'网页设定'中有三个选项,分别是移动梦网,百宝箱和下载新空间.我是山东威海的,请问是否要在网页设定中重新设置一下呀?

程序地址:http://www.kaiwei.com.cn/src.rar
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyg158 2005-02-23
  • 打赏
  • 举报
回复
将移动梦网或百宝箱复制一份,然后将其中的接入点方式由CMWAP改为CMNET即可。

或者更改程序,将连接方式改为通过移动代理的方式,这个方式不能在模拟器上调试,只能在手机上运行

CMNET方式需要先将上网设置中的接入点该为CMNET,默认为CMWAP方式

如果用CMWAP方式的话,需要使用移动的代理
具体方式如下:
J2me上的GPRS网络接入点有两个,一个就是CMNET,一个就是CMWAP。一般移动梦网,百宝箱就是挂在CMWAP上的。

CMNET
CMNET就是一般的互联网的网络接入点。我们一般在SUN那里看到的J2ME实例代码都是基于CMNET接入点的网络下载。一般来说,CMNET可以连接所有的网络站点。下面就是我在开发仙剑的CMNET的下载资源包的代码片断。

/***************************************************************************
* 下载网络文件
* @param url String 要下载的文件的地址URL
* @return byte[] 如果下载成功,返回文件的字节缓冲;
* 如果下载失败,返回null
*/

public byte[] download_CMNET(String url) {
ContentConnection c;
InputStream is = null;
byte[] data = null;

try {
c= (ContentConnection)Connector.open("http://"+ServerName+"/"+url,Connector.READ,true);
is = c.openInputStream();
int dataLength = (int) c.getLength();
if (dataLength == -1) {
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
int ch;
while ( (ch = is.read()) != -1)
bStrm.write(ch);
data = bStrm.toByteArray();
bStrm.close();
}else {
data = new byte[dataLength];
Data_Read_Buf(is,data,0,dataLength);
}
is.close();
c.close();
}catch (Exception e) {
data = null;
}
c= null;
return data;
}

代码很普通,不过需要注意的有以下两点。

1. getLength()并不是一定都有效,比如我发现在Nokia 40的手机上这个函数有效,但是在Nokia 60的手机上,这个函数通常都无效。所以我们通常都必须要有另外一个下载方式,既是从while循环不断从输入流中一个一个读byte,如果读出为-1,则表示输入流数据读完。

2. Connector.open最后一个参数是表示是否允许timeout,通常我们都得设置true,因为GPRS网路经常中断,那么必须有个timeout来退出连接。依照我的经验,一般如果能够执行完c.openInputStream()后,就表明连接上了,只要连接上后,数据的下载是比较快的(也就是说网络连接是最慢的)。

CMWAP
MOTO的手机通常都是默认接入点就是CMWAP。在手机上的“网页“->”网页设定”中可以设置默认的接入点。一般中国大陆的出产的MOTO手机都是设置的”移动梦网”的网络接入点,起始就是CMWAP接入点。而MOTO最可恶的一点就是一旦默认接入点是CMWAP,那么所有的J2ME应用程序都无法访问CMNET。而Nokia 40虽然默认的接入点是CMWAP,但是运行中可以自动检查CMNET来访问CMNET。

解决MOTO的网络连接有两个办法:

1. 在”网页“->”网页设定”中新建一个网页,然后不需要填写任何参数,设置成默认后,它就可以让手机上J2ME程序通过CMNET访问网络了。

2. 通过移动的代理来实现通过CMWAP访问互联网。下面是仙剑中使用CMWAP下载资源包的代码片断:

/***************************************************************************
* 下载网络文件
* @param url String 要下载的文件的地址URL
* @return byte[] 如果下载成功,返回文件的字节缓冲;
* 如果下载失败,返回null
*/

public byte[] download_CMWAP(String url) {
HttpConnection c;
InputStream is = null;
byte[] data = null;
try {
c= (HttpConnection)Connector.open("http://10.0.0.172:80/"+url,Connector.READ,true);
c.setRequestProperty("X-Online-Host",ServerName);
c.setRequestProperty("Accept", "*/*");
is = c.openInputStream();
int dataLength = (int) c.getLength();
if (dataLength == -1) {
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
int ch;
while ( (ch = is.read()) != -1)
bStrm.write(ch);
data = bStrm.toByteArray();
bStrm.close();
}else {
data = new byte[dataLength];
Data_Read_Buf(is,data,0,dataLength);
}
is.close();
c.close();
}catch (Exception e) {
data = null;
}
c= null;
return data;
}

比如我们要下载
http://xxx.xxx.xxx.xxx/BB/AA.dat,那么上面的ServerName= ”xxx.xxx.xxx.xxx”, 而url = ”BB/AA.dat”
oceanlee8888 2005-02-21
  • 打赏
  • 举报
回复
能否说明白出现什么问题,你发的源代码不全,我无法分析。但是我看到你把初始化动作放在了startApp()中这是不正确的,应该放在构造函数中
whxxr 2005-02-21
  • 打赏
  • 举报
回复
程序一运行后,添入1001,然后点击OK,出现一个是否链接到网络的提示,
使用网络:(标题)
是否链接到http://www.kaiwei.com.cn/selasp.asp?kmbh=1001
是,只询问一次
总是询问
永不询问
然后先总是询问后点OK,然后程序就没有反应了,一直就联不上网了.

程序地址:http://www.kaiwei.com.cn/OrderStatusClient.rar

13,100

社区成员

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

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