Android通过http获取json数据

301 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

Android的数据一般都是存储在后端里 而和后端通过http链接传输数据 而数据一般是使用java.net包里来实现获取数据的

具体的使用如下:

public void lj() throws Exception {

    String path ="http://192.168.1.107:8081/findNote";
    URL url = new URL(path);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setConnectTimeout(5000);
    conn.setRequestMethod("GET");
    InputStream is = conn.getInputStream();
    byte[] data = readInputStream(is);//得到html的二进制数据
    String html = new String(data, "UTF-8");


    JSONArray note =  JSON.parseArray(html);//单条是这个,list是这个json.parseArray()

    //2、循环遍历这个数组
    for(int i=0;i<note.size();i++){
        //3、把里面的对象转化为JSONObject
        JSONObject job =  note.getJSONObject(i);
        // 4、把里面想要的参数一个个用.属性名的方式获取到
        String notet = job.getString("notetime");
        String time = job.getString("note");
        notetime.add(time);
        notelist.add(notet);
        System.out.println(notelist) ;
    }
    System.out.println(list) ;

    //sendRequestOkHttp();

    Note note1=new Note();
    note1.setNote("888");

    String json = JSON.toJSON(note1).toString();
    Log.v("", String.valueOf(note));
}

public static byte[] readInputStream(InputStream inStream) throws Exception{
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = 0;
    while( (len=inStream.read(buffer)) != -1 ){
        outStream.write(buffer, 0, len);
    }
    inStream.close();
    return outStream.toByteArray();

首先我们先在后端得到一个链接 来获取Json数据 一般前后端交互都是用json 和xml 和protobuf等这几种主流的交互 但在这里我们使用了比较常用的json

我们先创建一个变量 把链接字符串赋值给变量 然后用URL url = new URL(path);来获取一个URL对象

然后用这个对象来打开对网址的链接 然后对打开的链接对象设置连接超时时间 和设置请求方式 一般有GET POST PUT 和 DELETE 四个 感兴趣的读者请自行百度

然后我们再通过链接对象获取输入流 然后通过我们写的一个方法去把输入流转换为我们输入的字节数组

然后把字节数组转换成UTF—8格式的字符串 然后通过JSON.parseArray(html);把获取的字符串转成json数组 然后把json数组里的json对象一个个通过for循环的方法获取出来 至此就完成了通过http获取json数据了