零点一
现在我们一般用各种框架来开发,确实方便使用,但是我觉得作为初学者,这些基础的东西是必不可少的。所以和大家分享一下基础的网络编程。
一、Http?JSON?
Http是应用层的协议,使用的TCP/ip协议传输数据。我们在Android中使用Http来连接服务器获取数据或者上传数据。
JSON,我们先来看看百度怎么说的。
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。
其实JSON就是我们传输数据的一种格式(想想XML),不过JSON更加轻量化更加方便。JSON有自己的语法,存储数据主要的形式是键值对。
二、在Android中使用Http
我们主要会接触这两个类:URL和HttpURLConnection,字面意思,一个是和URL有关的,另一个是和Http连接有关的。连接的步骤是:1.设置URL 2.通过URL实例化HttpURLConnection对象 3.设置HttpURLConnection相应的属性 4.连接 5.打开输入流读取数据。
不过注意由于这一系列操作是同步的,会阻塞主线程,所以Android建议将这些操作放在子线程中进行。
Show me the code
public void getJson(){
new Thread(new Runnable() {
@Override
public void run() {
try {
//你的URL
String url_s = "http://www.baidu.com";
URL url = new URL(url_s);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置连接属性。不喜欢的话直接默认也阔以
conn.setConnectTimeout(5000);//设置超时
conn.setUseCaches(false);//数据不多不用缓存了
//这里连接了
conn.connect();
//这里才真正获取到了数据
InputStream inputStream = conn.getInputStream();
InputStreamReader input = new InputStreamReader(inputStream);
BufferedReader buffer = new BufferedReader(input);
if(conn.getResponseCode() == 200){//200意味着返回的是"OK"
String inputLine;
StringBuffer resultData = new StringBuffer();//StringBuffer字符串拼接很快
while((inputLine = buffer.readLine())!= null){
resultData.append(inputLine);
}
text = resultData.toString();
Log.v("out---------------->",text);
}
} catch(Exception e){
e.printStackTrace();
}
}
}).start();
}
复制代码
有了数据还要解析一下
上文的代码获取的数据是一个HTML文件(要是没记错的话),但是有时我们从服务器拿到的是JSon数据,这样的话就需要解析一下,Android中可以使用JSonObject等来直接解析。我当时练习用的服务器数据是内部的,但是大概形式是这样:
{
"data": [
{
"id": 68
},
{
"id": 66
}
]
}
复制代码
我们分析一下,可以使用JSONArray来直接解析"data"
public void parseJson(){
try{
//这里的text就是上边获取到的数据,一个String.
JSONObject jsonObject = new JSONObject(text);
getJSONArray中的参数就是你想要分析的JSON的键
JSONArray jsonDatas = jsonObject.getJSONArray("data");
int length = jsonDatas.length();
String test;
for(int i =0;i<length;i++){
JSONObject person = jsonDatas.getJSONObject(i);
test = person.getString("id");
Log.v("out---------------->",i+"---------------"+test);
}
} catch(Exception e){
e.printStackTrace();
}
}
复制代码
基础的使用就是这些,O了迪杰特斯拉K。
//作为Android开发的初学者,如果我有错误的地方或者不足的话欢迎大家指正。