零点一

现在我们一般用各种框架来开发,确实方便使用,但是我觉得作为初学者,这些基础的东西是必不可少的。所以和大家分享一下基础的网络编程。

一、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开发的初学者,如果我有错误的地方或者不足的话欢迎大家指正。