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 页面布局
点击事件 点击按钮时获取数据
@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 "读写错误";
}
获取百度的数据
获取本地数据库的数据,本地服务器用的是http协议,所以前缀是http而不是https
解析json数据
加入jar包,可在build.gradle- dependencies加入
compile 'com.google.code.gson:gson:2.5'
一行代码即可导入
List<Book> books = gson.fromJson(传入的json, new TypeToken<List<Book>>() {
}.getType());
掌握了这个之后,我相信其他的简单数据传递功能都可以实现了。码住。加强记忆