123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- package com.huimv.common.utils;
- import net.sf.json.JSONObject;
- import java.io.*;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- import java.nio.charset.StandardCharsets;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * @Author Anchor
- * @Date 2021/7/16 10:30
- * @Version 1.0.1
- */
- public class AirQualityIndexUtil {
- /**
- * 天气情况查询接口地址
- */
- public static String API_URL = "http://apis.juhe.cn/simpleWeather/query";
- /**
- * 请求key ---这个key是杨迪自己注册的.免费版.....希望公司后面买正式版
- */
- public static String API_KEY = "b9876f1d1eaec3ae987fcd54646060f7";
- /**
- * 根据城市名查询天气情况
- *
- * @param cityName
- */
- public static String queryWeather(String cityName) {
- //组合参数
- Map<String, Object> params = new HashMap<>();
- params.put("city", cityName);
- params.put("key", API_KEY);
- String queryParams = urlEncode(params);
- String response = doGet(API_URL, queryParams);
- System.out.println(response);
- try {
- JSONObject jsonObject = JSONObject.fromObject(response);
- int errorCode = jsonObject.getInt("error_code");
- if (errorCode == 0) {
- System.out.println("调用接口成功");
- JSONObject result = jsonObject.getJSONObject("result");
- JSONObject realtime = result.getJSONObject("realtime");
- /* System.out.printf("城市:%s%n", result.getString("city"));
- System.out.printf("天气:%s%n", realtime.getString("info"));
- System.out.printf("温度:%s%n", realtime.getString("temperature"));
- System.out.printf("湿度:%s%n", realtime.getString("humidity"));
- System.out.printf("风向:%s%n", realtime.getString("direct"));
- System.out.printf("风力:%s%n", realtime.getString("power"));
- System.out.printf("空气质量:%s%n", realtime.getString("aqi"));
- */
- return realtime.getString("aqi");
- } else {
- System.out.println("调用接口失败:" + jsonObject.getString("reason"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * get方式的http请求
- *
- * @param httpUrl 请求地址
- * @return 返回结果
- */
- public static String doGet(String httpUrl, String queryParams) {
- HttpURLConnection connection = null;
- InputStream inputStream = null;
- BufferedReader bufferedReader = null;
- //返回结果字符串
- String result = null;
- try {
- //创建远程url连接对象
- URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString());
- //通过远程url连接对象打开一个连接,强转成httpURLConnection类
- connection = (HttpURLConnection) url.openConnection();
- //设置连接方式:get
- connection.setRequestMethod("GET");
- //设置连接主机服务器的超时时间:5000毫秒
- connection.setConnectTimeout(5000);
- //设置读取远程返回的数据时间:6000毫秒
- connection.setReadTimeout(6000);
- //发送请求
- connection.connect();
- //通过connection连接,获取输入流
- if (connection.getResponseCode() == 200) {
- inputStream = connection.getInputStream();
- //封装输入流,并指定字符集
- bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
- //存放数据
- StringBuilder sbf = new StringBuilder();
- String temp;
- while ((temp = bufferedReader.readLine()) != null) {
- sbf.append(temp);
- sbf.append(System.getProperty("line.separator"));
- }
- result = sbf.toString();
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- //关闭资源
- if (null != bufferedReader) {
- try {
- bufferedReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (null != inputStream) {
- try {
- inputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (connection != null) {
- //关闭远程连接
- connection.disconnect();
- }
- }
- return result;
- }
- /**
- * 将map型转为请求参数型
- *
- * @param data
- * @return
- */
- public static String urlEncode(Map<String, ?> data) {
- StringBuilder sb = new StringBuilder();
- for (Map.Entry<String, ?> i : data.entrySet()) {
- try {
- sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- String result = sb.toString();
- result = result.substring(0, result.lastIndexOf("&"));
- return result;
- }
- }
|