Javaweb SSM项目在tomocat服务器上与安卓客户端数据交互(json)(二)

安卓端

从对安卓开发到一无所知,到第一次完成SSM与安卓应用的通信也才三天时间(自信.jpg),其实我学安卓的目的是项目答辩做出与众不同的项目,我设想的安卓应用特别简单,涉及到的知识很少。对于初学者,我可以建议大家看B站的教程,用的是Android Studio
https://www.bilibili.com/video/av36814782
任康可老师讲的特别好!!!
重点 p1-4 (什么都不会一定要先熟悉界面,跟着敲)
p9-p11 ListView 重点
P39-45 网络编程重点
其他的可以1.5倍速直接过一遍 ,大概记住位置,不会再回来看

目的:做出一款接受网络数据的应用
1 网络许可

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

2 页面布局
Javaweb SSM项目在tomocat服务器上与安卓客户端数据交互(json)(二)
点击事件 点击按钮时获取数据

 @Override
    public void onClick(View v) {
        switch (v.getId()){
            case  R.id.button:
                //获取编辑器的地址
                String url=getEditUrl();
                //异步处理
                new RequestworkDate().execute(url);
                break;
        }
    }

异步处理代码

 class RequestworkDate extends AsyncTask<String,Integer,String>{

      //在后台work之前
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //主线程
    }

    @Override
        protected String doInBackground(String[] objects) {
           //在这里执行requestDate()方法
            String result=requestDate(objects[0]);
            return result;
        }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        textView.setText(result);

        //执行完在主线程中
    }
}

requestDate()方法,及时获取数据的方法

private  String requestDate(String urlString) {
        try {
            URL url=new URL(urlString);
            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
            connection.setConnectTimeout(30000);//30秒延迟
            connection.setRequestMethod("GET");


            connection.connect();
            int response=connection.getResponseCode();
            String reponseMessage=connection.getResponseMessage();
            //这里接受传入的数据,使用Io流进行读取写入
            //inputStream就是请求的数据
            InputStream inputStream=connection.getInputStream();
            Reader reader=new InputStreamReader(inputStream,"UTF-8");
            char[] buffer=new char[1024];
            reader.read(buffer);
            
            String content=new String(buffer);
            return  content;
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return  "网址错误";
        } catch (IOException e) {
            e.printStackTrace();
            return  "读写错误";
        }

获取百度的数据Javaweb SSM项目在tomocat服务器上与安卓客户端数据交互(json)(二)
获取本地数据库的数据,本地服务器用的是http协议,所以前缀是http而不是https
Javaweb SSM项目在tomocat服务器上与安卓客户端数据交互(json)(二)
解析json数据
加入jar包,可在build.gradle- dependencies加入

  compile 'com.google.code.gson:gson:2.5'

一行代码即可导入

 List<Book> books = gson.fromJson(传入的json, new TypeToken<List<Book>>() {
        }.getType());

掌握了这个之后,我相信其他的简单数据传递功能都可以实现了。码住。加强记忆