package com.nongyuanbao.server;

import java.io.IOException;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;
import com.jfinal.aop.Before;
import com.jfinal.plugin.activerecord.tx.Tx;
import com.neptune.core.project.AutoIdHelper;
import com.nongyuanbao.vo.SrtResultVO;
import com.nongyuanbao.weather.model.Report;


public class WeatherReportServer {

    /**
     * 一个小时爬30次数据
     */
    @Before(Tx.class)
    public void addWeatherreport(){
        CloseableHttpClient httpCilent2 = HttpClients.createDefault();
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(5000)   //设置连接超时时间
                .setConnectionRequestTimeout(5000) // 设置请求超时时间
                .setSocketTimeout(5000)
                .setRedirectsEnabled(true)//默认允许自动重定向
                .build();
        HttpGet httpGet2 = new HttpGet("https://free-api.heweather.com/s6/weather/now?location=%E9%B2%81%E5%B1%B1&key=1d39bc6e725649dabebf1a3c1f27f4cc");
        httpGet2.setConfig(requestConfig);
        String srtResult = "";
        try {
            HttpResponse httpResponse = httpCilent2.execute(httpGet2);
            if(httpResponse.getStatusLine().getStatusCode() == 200){
                srtResult = EntityUtils.toString(httpResponse.getEntity());//获得返回的结果
                //srtResult.substring(srtResult.indexOf(":"),srtResult.lastIndexOf("}"));  
                
                List<SrtResultVO> srtResultList = JSON.parseArray( srtResult.substring(srtResult.indexOf(":")+1,srtResult.lastIndexOf("}")), SrtResultVO.class);
                System.out.println(srtResultList);
                for(SrtResultVO vo : srtResultList){
                    Report weatherreport = new Report();
                    weatherreport.setId(AutoIdHelper.getId());
                    weatherreport.setCid(vo.getBasic().getCid());
                    weatherreport.setLocation(vo.getBasic().getLocation());
                    weatherreport.setCity(vo.getBasic().getParent_city());
                    weatherreport.setProvince(vo.getBasic().getAdmin_area());
                    weatherreport.setCnty(vo.getBasic().getCnty());
                    weatherreport.setLat(vo.getBasic().getLat());
                    weatherreport.setLon(vo.getBasic().getLon());
                    weatherreport.setTz(vo.getBasic().getTz());
                    
                    weatherreport.setLoc(vo.getUpdate().getLoc());
                    weatherreport.setUtc(vo.getUpdate().getUtc());
                    
                    weatherreport.setCloud(vo.getNow().getCloud());
                    weatherreport.setCondCode(vo.getNow().getCond_code());
                    weatherreport.setCondTxt(vo.getNow().getCond_txt());
                    weatherreport.setFl(vo.getNow().getFl());
                    weatherreport.setHum(vo.getNow().getHum());
                    weatherreport.setPcpn(vo.getNow().getPcpn());
                    weatherreport.setPres(vo.getNow().getPres());
                    weatherreport.setTmp(vo.getNow().getTmp());
                    weatherreport.setVis(vo.getNow().getVis());
                    weatherreport.setWindDeg(vo.getNow().getWind_deg());
                    weatherreport.setWindDir(vo.getNow().getWind_dir());
                    weatherreport.setWindSc(vo.getNow().getWind_sc());
                    weatherreport.setWindSpd(vo.getNow().getWind_spd());
                    
                    weatherreport.setStatus(vo.getStatus());
                    
                    System.out.println(weatherreport);
                    weatherreport.save();
                    
                }
                
                
            }else if(httpResponse.getStatusLine().getStatusCode() == 400){
                //..........
            }else if(httpResponse.getStatusLine().getStatusCode() == 500){
                //.............
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                httpCilent2.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
package com.nongyuanbao.task;

import com.jfinal.aop.Duang;
import com.nongyuanbao.server.WeatherReportServer;

public class WeatherReportTask implements Runnable {
    
    @Override
    public void run() {
        WeatherReportServer weatherReportServer =  Duang.duang(WeatherReportServer.class);
        weatherReportServer.addWeatherreport();
    }


}

cron4j=weatherReport


#demo.cron=* * * * *
#demo.class=
#demo.daemon=true
#demo.enable=true 

#两分钟运行一次
weatherReport.cron=*/2 * * * * 
weatherReport.class=com.nongyuanbao.task.WeatherReportTask
weatherReport.daemon=true
weatherReport.eable=true

 




}

 

posted on 2018-03-26 18:05  WWonder  阅读(360)  评论(0编辑  收藏  举报