今天实现了获取云端数据库的数据在app中进行显示的功能。
最初准备使用本地的数据库,但通过筛选考虑,最终决定使用okhttp,方便对用户及后端数据的及时了解。
主要代码:
private void get(){ new Thread(){ @Override public void run() { super.run(); String url="http://39.103.196.146:8888/getNewsData/GetNewsDataServlet"; try { String result=getData(url); manageResponse(result); // Log.e("内容:",result); Message msg=Message.obtain(); msg.obj=list; handler.sendMessage(msg); } catch (IOException | JSONException e) { e.printStackTrace(); } } }.start(); } private String getData(String url) throws IOException { RequestBody responseBody=new FormBody.Builder() .add("classify", String.valueOf(classify+1)) .build(); Request request=new Request.Builder().post(responseBody).url(url).build(); Response response=okHttpClient.newCall(request).execute(); return response.body().string(); } private void manageResponse(String result) throws JSONException { JSONArray jsonArray=new JSONArray(result); for(int i=0;i<jsonArray.length();i++) { JSONObject jsonObject=jsonArray.getJSONObject(i); String title=jsonObject.getString("title"); String time=jsonObject.getString("time"); String place=jsonObject.getString("place"); String author=jsonObject.getString("author"); String content=jsonObject.getString("content"); String img=jsonObject.getString("img"); Bean bean=new Bean(); bean.setTitle(title); bean.setTime(time); bean.setPlace(place); bean.setAuthor(author); bean.setContent(content); bean.setImg(img); list.add(bean); } }
使用okhttp获取数据时,需要新建一个子线程进行数据的获取,不能再主线程使用,会报错。
使用okhttp也有get和post方法,可以根据需要进行选择使用。