手机httpConnection连接网络很慢的问题?
我们通过HTTP协议给web服务器发送数据
通过conn = (HttpConnection) Connector.open( "http://url, Connector.READ_WRITE,true)的方式,但是有时候有的时候,手机第一次发送数据的时候,返回很慢,简直无法容忍,有时超过9s甚至更久,不知道是什么原因,现在的解决方式是等待9s没有接收到服务器返回的数据,则重新发送一次请求.反正很奇怪,程序只要不是第一次发送请求,数据立马就能返回,比如,我第一次等待了9s甚至更久,但是在这等待是期间,我可以随时启动一新的线程重新发送一次请求,数据直接就回来了.开始怀疑是不是第一次请求的时候,java要编译和加载类什么的.所以比较慢,就想b/s的系统中,第一次访问jsp等是很慢的,之后再访问就很快了.但是觉得也不至于怎么慢啊!
我无法解释这种现象,各位有什么好的解释和解决方式?谢谢!
------解决方案--------------------有可能是第一次请求的时候返回的是移动的WML计费页面,HTTP请求没有过到你的服务器,而被移动的网关拦截了,你可以取返回的数据打印出来看看就清楚了,一般的做法是收到移动的计费页面后再发送多一次请求就可以解决这问题, ~ _~
------解决方案--------------------你使用cmnet连接试试,如果还慢,应该就是网络环境问题,这个问题其实挺普遍的.
------解决方案--------------------告诉你解决的方法 但是 必须 加分压
使用 HttpConnection 在 MIDlet 链接是 链接两次
第一次 只是
httpConn = (....).....open( "url "...);
httpConn.close();
之后再练一次
------解决方案--------------------那按LZ说的应该是终端或者当时的GPRS网络问题了~?!
------解决方案--------------------楼主所说的问题,做过J2ME联网应用的都有类似经历。
原因分析如下:
1. 首次连接速度很慢
* 所有手机GPRS首次连接速度都比较慢,这个就像拨号连接一样,首次连接上之后,以后的连接就快了。这个时间不可避免的。像Nokia的手机一般在5秒左右。
* 第二个原因是移动在作怪,你首次访问某个url时,他不会把这个请求交给你的服务器,而是先给你一个资费提示页面。只要你的程序不退出,再连接一次时,移动WAP网关就不会再给你发这个提示页面了。这个时间是可以避免的。我们的解决办法是,首次使用先调用一下取消提醒,这样以后移动就再也不会烦你了。 但是你用CMNET方式的话,这个提示页面就不会出现的。
2. 以后每次http连接,都需要至少2秒左右的时间。
3. 服务器处理时间,这个一般都很短。
3. 数据传输时间,这个根据当地网速来决定,北京gprs速度一般在4KB/s左右。如果服务器返回的内容很少,就不会用多长的时间。
手机GPRS联网速度慢,跟手机和移动的关系很大,跟我们的程序关系一般不大。
------解决方案--------------------网络