• Android开发之从网络URL上下载JSON数据


    网络下载拉取数据中,json数据是一种格式化的xml数据,非常轻量方便,效率高,体验好等优点,下面就android中如何从给定的url下载json数据给予解析:

    主要使用http请求方法,并用到HttpGet和HttpResponse等对象来获取数据。直接上实例代码吧:、

    (1)从网络URL上读取json字符串的实现

    public String readJSONFeed(String url){
            StringBuilder stringBuilder = new StringBuilder();
            HttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            HttpResponse response;
            try {
                response = client.execute(httpGet);
                StatusLine statusLine = response.getStatusLine();
                int statusCode = statusLine.getStatusCode();
                if(statusCode == 200){
                    HttpEntity entity = response.getEntity();
                    InputStream content = entity.getContent();
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(content));
                    String line ;
                    while((line = reader.readLine())!=null){
                        stringBuilder.append(line);
                    }
                }else{
                    Log.e("JSON", "Failed to download file");
                }
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return stringBuilder.toString();
        }

    (2)异步方法拉取网络上的数据的实现:

    private class ReadJSONFeedTask extends AsyncTask<String, Void, String>{
    
            StringBuilder stringBuilder  = new StringBuilder();
            @Override
            protected String doInBackground(String... urls) {
                // TODO Auto-generated method stub
                return readJSONFeed(urls[0]);
            }
    
            @Override
            protected void onPostExecute(String result) {
                // TODO Auto-generated method stub
                String strItem;
                try {
                    JSONArray jsonArray = new JSONArray(result);
                    for(int i = 0;i<jsonArray.length();i++){
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        strItem= jsonObject.getString("appeId")+
                                " - "+jsonObject.getString("inputTime") +"
    ";
                        stringBuilder.append(strItem);
                    }
                    ((TextView)findViewById(R.id.tvJson)).setText(stringBuilder.toString());
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
        }

    (3)最后如何启一个异步下载任务呢?其实就是new一个上面的异步类对象并执行即可

    new ReadJSONFeedTask().execute(jsonUrl);

    到此为止,从网络URL上下载json数据已经成功完成了。最后下载后的数据显示结果如下:

  • 相关阅读:
    tyflow birth节点
    tyflow雨滴在物体上滑落测试
    【bootstrap】如何在js中动态修改提示冒泡(Tooltips)的显示内容
    解决office自动更新失败,错误代码0xc0000142
    hosts文件路径(Windows)
    【微信测试版】支持安卓平板和手机同时登录
    【javascript】canvas画布涂鸦及保存图片到本地
    【python】图片批量压缩(多线程)
    【python】提取pdf文件中的所有图片
    【python】计算程序运行所消耗的总时间
  • 原文地址:https://www.cnblogs.com/JczmDeveloper/p/3858350.html
Copyright © 2020-2023  润新知