package com.hidata.devops.paas;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.*;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
/**
* @Author: CaoTing
* @Description: 通过get请求向中华万年历网站http://wthrcdn.etouch.cn/weather_mini获取某个城市的天气状况数据,数据格式是Json
* @Date: 2019/7/4
*/
public class WeatherUtils {
/**
* 通过城市名称获取该城市的天气信息
*
* @param cityName
* @return
*/
public static String getWeatherData(String cityName) {
StringBuilder sb=new StringBuilder();;
try {
cityName = URLEncoder.encode(cityName, "UTF-8");
String weatherRrl = "http://wthrcdn.etouch.cn/weather_mini?city="+cityName;
// String weatherRrl = "https://free-api.heweather.net/s6/weather/now?location="+cityName+"&key=db86a5196f304e52a4369818c5182e60";
URL url = new URL(weatherRrl);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
GZIPInputStream gzin = new GZIPInputStream(is);
// 设置读取流的编码格式,自定义编码
InputStreamReader isr = new InputStreamReader(gzin, "utf-8");
BufferedReader reader = new BufferedReader(isr);
String line = null;
while((line=reader.readLine())!=null) {
sb.append(line).append(" ");
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
/**
* 将JSON格式数据进行解析 ,返回一个weather对象
* @param weatherInfoByJson
* @return
*/
public static WeatherInfo getWeather(String weatherInfoByJson){
WeatherInfo wea = new WeatherInfo();
JSONObject jsonObject = JSONObject.parseObject(weatherInfoByJson);
JSONObject dataJsonObj = jsonObject.getJSONObject("data");
wea.setCity(dataJsonObj.getString("city"));
String ganmao = dataJsonObj.getString("ganmao");
wea.setGanMao(dataJsonObj.getString("ganmao"));
String wendu = dataJsonObj.getString("wendu");
wea.setWendu(wendu+"℃");
JSONArray jsonArray = dataJsonObj.getJSONArray("forecast");
Map<String,String> map = (Map<String, String>) jsonArray.get(0);
wea.setCurrentDate(map.get("date"));
wea.setHigh(map.get("high"));
wea.setFengli(getFengli(map.get("fengli")));
wea.setLow(map.get("low"));
wea.setFengxiang(map.get("fengxiang"));
wea.setType(map.get("type"));
return wea;
}
public static String getFengli(String s){
Pattern p = Pattern.compile("\\<\\!\\[CDATA\\[(?<text>[^\\]]*)\\]\\]\\>");
Matcher m = p.matcher(s);
if(m.matches()) {
return m.group(1);
}
return "";
}
}
程序猿小D
- 粉丝: 4232
- 资源: 908
最新资源
- 参考文献-产业集聚与地区工资差距-基于我国269个城市的实证研究.pdf
- 解析 SpringBoot 工作量统计系统:面向未来工作管理生态的创新展望
- 同步整流BUCKBOOST 双向DC-DC转换器 升降压转换器 恒压恒流.zip
- PID控制项目-电源类-双向DC-DC变换器,主要功能全部实现.zip
- PID控制项目-风力摆类- 风力摆源码+设计分析.zip
- PID控制项目-多功能计数器、高功率因数电源、位移测量装置、温度自动控制系统.zip
- PID控制项目-风力摆类-全国电赛风力摆设计,一等奖作品!.zip
- PID控制项目-风力摆类-详解风力摆控制系统赛题、源代码开源.zip
- PID控制项目-机械臂类- 应用于六轴机器手臂运动控制——直流伺服反馈系统设计(硬件+源代码+上位机等).zip
- PID控制项目-水下类-开源水下滑翔机.zip
- PID控制项目-平衡球--可以骑的球平衡器iRoll.zip
- Kotlin入门教程协程指南完整版PDF最新版本
- PID控制项目集合(数字频率计、风力摆、双向DC-DC变换器).zip
- 小程序 Sentry SDK.zip
- PID控制项目-四轴飞行类- EEDrone四旋翼第一代DIY制作(飞控主板+飞控IMU+飞控固件).zip
- PID控制项目-四轴飞行类- 瑞萨R5F100LEA单片机实现的四旋翼飞行器电路原理图、源码、论文.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈