java请求http页面的json格式数据,并转换存入数据库

仅供大家参考,如内容中有不对的地方请大家谅解,并指出,我会及时改正,谢谢!!!
 

在我参与的实际项目中,有一个需求是,给你一个http网址(如:http://www.baidu.com),让你访问网页的值,这个值为json格式,让你获取到并存入数据库,以备用;以下为实现步骤,仅供大家参考:

spring引入引入@Scheduled注解  需要在applicationContext.xml文件中配置:

    
   
      
  
    
  
 

springBoot引入@Scheduled注解配置:


   
        org.springframework.boot
        spring-boot-starter
   

   
        org.springframework.boot
        spring-boot-starter-test
        test
   

     
        org.springframework.boot
        spring-boot-devtools
        true
   


 

示例json:
{ "test1": "wx9fdb8ble7ce3c68f", "test2": "123456789", "testData1": { "testdatason1": "97895455" "testdatason2":3, "testData2": [ { "testshuzu1":"12" "testshuzu1":"11" }, { "testshuzu2":"13" "testshuzu2":"14" }, { "testshuzu3":"15" "testshuzu3":"16" } ] } }
 

1.工具方法:
释意:

1.url就是你要获取数据的网址(如:http://www.baidu.com)

2.params在这里可以一个值(key不能为空,但value可以,例如map(key:test1,value:“”))也可以在map中多个值

   /**
     * post请求(用于key-value格式的参数)
     */
    public static String doPost(String url, Map params) {
        BufferedReader in = null;
        try {
            // 定义HttpClient
            HttpClient client = new DefaultHttpClient();
            // 实例化HTTP方法
            HttpPost request = new HttpPost();
            request.setURI(new URI(url));
            // 设置参数
            if(params!=null && params.size()>0){
                List nvps = new ArrayList();
                for (Iterator iter = params.keySet().iterator(); iter.hasNext(); ) {
                    String name = (String) iter.next();
                    String value = String.valueOf(params.get(name));
                    nvps.add(new BasicNameValuePair(name, value));
                }
                request.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
            }
            HttpResponse response = client.execute(request);
            int code = response.getStatusLine().getStatusCode();
            if (code == 200) { // 请求成功
                in = new BufferedReader(new InputStreamReader(response
                        .getEntity().getContent(), "utf-8"));
                StringBuffer sb = new StringBuffer("");
                String line = "";
                String NL = System.getProperty("line.separator");
                while ((line = in.readLine()) != null) {
                    sb.append(line + NL);
                }
                in.close();
                return sb.toString();
            } else {
                System.out.println("状态码:" + code);
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
 
            return null;
        }
    } 
2.项目中实际方法:
 public void addTConstructionSupervision() {
        Map map = new HashMap();
        map.put("maps","");
        String url1 = "http://xxzx.zonwi.net:8009/getallmaintain";
        String str1 = doPost(url1,map);
        JSONObject json1= JSON.parseObject(str1);
        JSONArray jsonArray = json1.getJSONArray("result");
        int k = jsonArray.size();
        if(k>0&&jsonArray!=null)
        {
            for(int i=1;i             {
                TConstructionSupervision tcs = new TConstructionSupervision();
               /**
               *此处向对象中的每个属性赋值
               */
                TConstructionSupervision tcsv = tcvnservice.get(tcs.getId());
                if(tcsv==null||"".equals(tcsv))
                {
                    service.insert(tcs);
                }
            }
        }
    }
3.定时器执行方法
   @Scheduled(cron="0 0/30 * * * ?")   //每30min执行一次
    @Override
    public void savetsc() {
        logger.info("向数据库插入施工监管数据");
        addTConstructionSupervision();
    }
查询的时候,直接写定时器向数据库中插入数据,这里的定时器我用的是@Scheduled注解,还有其他的方式;想学习定时器的请在以下CSDN网址学习:
java定时任务的几种实现方式:https://blog.csdn.net/kegumingxin2626/article/details/72854823

spring定时任务详解(@Scheduled注解):https://blog.csdn.net/qq_33556185/article/details/51852537

注意点:
1.json转换,赋值的时候判空

2.json是否有重复数据,如果有需要判断,否则在插入的时候回违反主键唯有约束(前提,json中有主键),如自己生成uuid的话则不需要考虑

仅供大家参考,如内容中有不对的地方请大家谅解,并指出,我会及时改正,谢谢!!!
--------------------- 
版权声明:本文为CSDN博主「呱小飞」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Java_monkeys/article/details/81296167

你可能感兴趣的:(java)