今天实现了获取云端数据库的数据在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方法,可以根据需要进行选择使用。