Android网络编程学习记录
了解HTTP协议
分类
- 基于Socket
- 基于HTTP协议
- HttpUrlconnction(java.net包中提供)
- HttpClient(androidSDK中集成的开源框架)
服务器端返回客户端的内容有三种方式
- HTML代码的形式返回
- XML字符串的形式返回
- JSON对象的方式返回
步骤
首先加上权限
- 判断网络必须加上的权限
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE”/> - 如果判断是否连接wifi就必须加上的权限
<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE”/> - 上网权限
<uses-permission android:name=”android.permission.INTERNET”/>
判断网络
public static boolean getNetState(Context context)
{
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null || !info.isAvailable())
{
return false;
}
else
{
switch (info.getType()) {
case ConnectivityManager.TYPE_MOBILE:
Log.i("myout", "当前使用移动网络");
break;
case ConnectivityManager.TYPE_WIFI:
Log.i("myout", "当前使用WIFI网络");
break;
}
return true;
}
}
获取网络数据
public static String getDataFromNet(String urlPath)
{
try
{
URL url = new URL(urlPath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(6000);
conn.setReadTimeout(6000);
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
if (code == HttpURLConnection.HTTP_OK)
{
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
StringBuilder sb = new StringBuilder();
String len;
while((len = reader.readLine()) != null)
{
sb.append(len);
}
return changeJson(sb.toString());
}
} catch (MalformedURLException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return "no data";
}
我的感受
- 一定要记得权限、权限、权限、、、、
- POST可以向服务器提交表单数据
- 今天知道了网络连接响应码403,我请求连接,人家不搭理我。/(ㄒoㄒ)/~~
想说的话
- 博客坚持写,不管怎么样,今后打算学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
- 如果内容有什么地方不对,请告知,希望大家能一起学习和成长(^o^)/~
- 来一句:人非圣贤,孰能无过。复审代码是为了发现问题。不过如有遗漏,也不可把责任归咎于一个人身上去针对他。