android开发使用httpurlconnection
最经在做android开发涉及到要连接网络,由于对网络连接不太会用,我首选httpurlconnection,,网上看了一下,很多人多说,用这个协议只要设置权限
<uses-permission android:name="android.permission.INTERNET"/>就够了,于是照搬,请求网络服务代码如下:
URL url;
try {
url = new URL("http://www.baidu.com/");
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setReadTimeout(5000);
connection.setDoInput(true);
if(connection.getResponseCode()==200)
return changeinputstream(connection.getInputStream());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "false";
接着运行程序,到if(connection.getResponseCode()==200)的时候问题出现了,直接抛出io异常,查看log日志
java.net.UnknownHostException:www.baidu.com
<uses-permission android:name="android.permission.INTERNET"/>这个权限没设出的问题,又或者手机网络问题,但是我加了还是出错,于是继续找错,白白花费了半天的时间看了很多的垃圾论坛,什么都没发现,不服气的我又找了一些其他手机来测试,有的手机可以,有的不可以,奇了怪了,怎么会这样,想了我很久,发现用2G网的手机好像有很多的都是这样,我又看了一下权限:
<uses-permission android:name="android.permission.INTERNET"/>,他是允许打开网络套接字(socket)
闲着无聊我又把所有权限的作用大概浏览一下,发现还有个权限被很多人都漏了,而且网上也没人拿出来用
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>他是允许允许应用程序访问网络上的信息,你手机网速慢的时候,在应用程序中加入这个权限,再设置一下超时时间,试着添加他看看,在其他都保证正确的情况下,问题就迎刃而解了。
最后总结一下用httpurlconnection需要注意的几点
1.权限设置
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
两个都加上
2.检查手机网络和你要访问的网址,最好在浏览器上手动输入你要访问的网址,看看是否连得通