Android-一个有关Android的网络问题

发布于 2016-11-14 08:01:32 字数 248 浏览 1091 评论 2

我最近的一个项目碰到一个很诡异的事情。我是通过HttpClient来进行网络连接获取网页信息的。在虚拟机上面运行的很好,没有问题。但是在真机上面测试,就有问题。经过大量的调试,我终于发现,是因为我的手机默认使用WIFI上网的。然后我就在AndroidManifest.xml里面添加了使用WIFI权限,即

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-07-28 04:12:23

问题终于解决了。只要把

mHttpResponse = mHttpClient.execute(mHttpUriRequest, mHttpContext);

换成

mHttpResponse = mHttpClient.execute(mHttpUriRequest);

就OK了。这个HttpContext是用来保存连接状态的,取消之后就正常了,难道是因为连接状态的原因?有没有高手解释下为什么会因为这个连接状态而导致WIFI连接的不稳定?

清晨说ぺ晚安 2017-06-13 00:53:26

我一般都是

<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 模式下是否能够联通网络

祝好,
斑驳敬上

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文