Android-一个有关Android的网络问题
我最近的一个项目碰到一个很诡异的事情。我是通过HttpClient来进行网络连接获取网页信息的。在虚拟机上面运行的很好,没有问题。但是在真机上面测试,就有问题。经过大量的调试,我终于发现,是因为我的手机默认使用WIFI上网的。然后我就在AndroidManifest.xml里面添加了使用WIFI权限,即
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
问题终于解决了。只要把
换成
就OK了。这个HttpContext是用来保存连接状态的,取消之后就正常了,难道是因为连接状态的原因?有没有高手解释下为什么会因为这个连接状态而导致WIFI连接的不稳定?
我一般都是
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
如果还是访问的问题的话,说明并不是权限的问题
推荐你先关闭手机卡的无线连接,然后重启,只开启 wifi,然后尝试使用第三方的软件去上网
如果可以的话,再使用自己的程序。
有的手机会因为切换上网途径的时候导致应用层无法连接网络,多数重启就可以解决
更新
我十分介意仅 wifi 模式下能否让系统上网,就是说,请尝试一下仅使用 wifi 的时候使用默认浏览器上网,发送数据,查看是否可以接收到数据
好吧,我写了工程,模拟器、实体机用 wifi/3g 都没有问题
在线程里面
String url = "http://www.baidu.com";
HttpResponse response = makeClient(5555, 5555)
.execute(new HttpGet(url));
handler.sendMessage(handler.obtainMessage(0, 0,
response.getStatusLine().getStatusCode(),
EntityUtils.toString(response.getEntity())));
需要依赖的方法
public static HttpClient makeClient(int ConnTimeout, int SoTimeout) {
BasicHttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, ConnTimeout);
HttpConnectionParams.setSoTimeout(params, SoTimeout);
HttpClient client = new DefaultHttpClient(params);
client.getParams().setParameter("http.protocol.cookie-policy",
"rfc2109");
return client;
}
工程和apk文件已打包,路径: http://goo.gl/2stPn
请尝试点击应用的按钮,然后查看仅 wifi 模式下是否能够联通网络
祝好,
斑驳敬上