packagecom.nongyuanbao.server;importjava.io.IOException;importjava.util.List;importorg.apache.http.HttpResponse;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.util.EntityUtils;importcom.alibaba.fastjson.JSON;importcom.jfinal.aop.Before;importcom.jfinal.plugin.activerecord.tx.Tx;importcom.neptune.core.project.AutoIdHelper;importcom.nongyuanbao.vo.SrtResultVO;importcom.nongyuanbao.weather.model.Report;public classWeatherReportServer {/*** 一个小时爬30次数据*/@Before(Tx.class)public voidaddWeatherreport(){
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 srtResultList = JSON.parseArray( srtResult.substring(srtResult.indexOf(":")+1,srtResult.lastIndexOf("}")), SrtResultVO.class);
System.out.println(srtResultList);for(SrtResultVO vo : srtResultList){
Report weatherreport= newReport();
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();
}
}
}