diff --git a/code/java/DisasterWarning/pom.xml b/code/java/DisasterWarning/pom.xml
index c28db50..1c3d9a7 100644
--- a/code/java/DisasterWarning/pom.xml
+++ b/code/java/DisasterWarning/pom.xml
@@ -3,14 +3,14 @@
4.0.0
com.cpic.xim
disaster_warning
- 1.0-SNAPSHOT
+ 1.1
com.oracle
ojdbc8
19.3.0.0.0
- system
- ${project.basedir}/lib/ojdbc8.jar
+
org.apache.httpcomponents
diff --git a/code/java/DisasterWarning/src/main/java/AppMain.java b/code/java/DisasterWarning/src/main/java/AppMain.java
index 1b8095a..5fc8f84 100644
--- a/code/java/DisasterWarning/src/main/java/AppMain.java
+++ b/code/java/DisasterWarning/src/main/java/AppMain.java
@@ -22,34 +22,42 @@ import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.*;
-public class AppMain {
+public class AppMain
+{
// private final static String LOG_FILE_PATH = "./logs/app%u.log";
- public static void main(String[] args) {
+ public static void main( String[] args )
+ {
String json;
WeatherDisasterNotifyConfig config = null;
QWeatherDisasterWarning warning = null;
Logger logger = null;
// 配置logger
- try {
+ try
+ {
setRootLogger();
- logger = Logger.getLogger("com.cpicxim");
- } catch (IOException error) {
- System.out.println("配置logger失败,原因:" + error.getMessage());
+ logger = Logger.getLogger( "com.cpicxim" );
+ }
+ catch ( IOException error )
+ {
+ System.out.println( "配置logger失败,原因:" + error.getMessage() );
return;
}
// 读取配置
- try {
+ try
+ {
config = AppConfigManager.getConfig();
- } catch (IOException error) {
- System.out.println("读取配置文件失败!");
- System.out.println(error.getMessage());
+ }
+ catch ( IOException error )
+ {
+ System.out.println( "读取配置文件失败!" );
+ System.out.println( error.getMessage() );
- logger.log(Level.SEVERE, "读取配置文件失败:{0}", error.getMessage());
+ logger.log( Level.SEVERE, "读取配置文件失败:{0}", error.getMessage() );
return;
}
@@ -59,68 +67,90 @@ public class AppMain {
String userKey = config.getKey();
// 遍历所有城市,查询是否有警报,有则推送。
- while (true) {
- for (City city : cities) {
- try {
- json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON(queryURL,
- userKey, city.getCityCode(), false);
- warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning(json);
+ while (true)
+ {
+ for ( City city : cities )
+ {
+ try
+ {
+ json = WeatherDisasterWarningGrabber.getWeatherDisasterWarningJSON( queryURL,
+ userKey, city.getCityCode(), config.getProxySetting() );
+ warning = WeatherDisasterWarningGrabber.convertWeatherDisasterWarning( json );
- logger.log(Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[] { city.getCityName(), json });
+ logger.log( Level.INFO, "查询{0}天气预警,结果:{1}。", new Object[]
+ { city.getCityName(), json} );
Vector warningItems = warning.getWarning();
// 判断是否有警报,没有警报就结束当前城市的处理
- if (warningItems.isEmpty() == true) {
- logger.log(Level.INFO, "查询{0}天气预警,无警报!。", new Object[] { city.getCityName() });
+ if ( warningItems.isEmpty() == true)
+ {
+ logger.log( Level.INFO, "查询{0}天气预警,无警报!。", new Object[]
+ { city.getCityName()} );
continue;
}
// 有警报,就遍历警报数组
- for (QWeatherDisasterWarningItem item : warningItems) {
+ for ( QWeatherDisasterWarningItem item : warningItems )
+ {
// 先检查是否已经发送过
- if (sendMessage.checkWarningHasSended(item.getId()) == false) {
- logger.log(Level.INFO, "查询{0}天气预警,ID:{1},已有发送记录,跳过。",
- new Object[] { city.getCityName(), item.getId() });
+ if ( sendMessage.checkWarningHasSended( item.getId() ) == false)
+ {
+ logger.log( Level.INFO, "查询{0}天气预警,ID:{1},已有发送记录,跳过。", new Object[]
+ { city.getCityName(), item.getId()} );
continue;
}
// 没有发送过
- logger.log(Level.INFO, "查询{0}天气预警,发送日志。", new Object[] { city.getCityName() });
+ logger.log( Level.INFO, "查询{0}天气预警,发送日志。", new Object[]
+ { city.getCityName()} );
- sendMessage.sendWeatherDisasterWarning(config.getWechatOfficalAccountURL(),
- item);
+ sendMessage.sendWeatherDisasterWarning( config.getWechatOfficalAccountURL(),
+ item );
- logger.log(Level.INFO, "{0}天气预警,日志发送成功。", new Object[] { city.getCityName() });
+ logger.log( Level.INFO, "{0}天气预警,日志发送成功。", new Object[]
+ { city.getCityName()} );
// 将发送的警报,保存起来
- sendMessage.saveWeatherDisasterWarning(city.getCityName(), item);
+ sendMessage.saveWeatherDisasterWarning( city.getCityName(), item );
}
- } catch (IOException error) {
- System.out.println("查询" + city.getCityName() + "出现异常!");
- System.out.println(error.getMessage());
+ }
+ catch ( IOException error )
+ {
+ System.out.println( "查询" + city.getCityName() + "出现异常!" );
+ System.out.println( error.getMessage() );
- logger.log(Level.SEVERE, "查询 {0} 出现异常:{1}。",
- new Object[] { city.getCityName(), error.getMessage() });
- } catch (SQLException error) {
- logger.log(Level.SEVERE, "查询 {0} 写入数据库失败:{1}。",
- new Object[] { city.getCityName(), error.getMessage() });
- } catch (ClassNotFoundException error) {
- logger.log(Level.SEVERE, "查询 {0} 加载oracle驱动失败:{1}。",
- new Object[] { city.getCityName(), error.getMessage() });
+ logger.log( Level.SEVERE, "查询 {0} 出现异常:{1}。", new Object[]
+ { city.getCityName(), error.getMessage()} );
+ }
+ catch ( SQLException error )
+ {
+ logger.log( Level.SEVERE, "查询 {0} 写入数据库失败:{1}。", new Object[]
+ { city.getCityName(), error.getMessage()} );
+ }
+ catch ( ClassNotFoundException error )
+ {
+ logger.log( Level.SEVERE, "查询 {0} 加载oracle驱动失败:{1}。", new Object[]
+ { city.getCityName(), error.getMessage()} );
- } catch (Exception error) {
- logger.log(Level.SEVERE, "查询 {0} 出现未知错误:{1}。",
- new Object[] { city.getCityName(), error.getMessage() });
+ }
+ catch ( Exception error )
+ {
+ logger.log( Level.SEVERE, "查询 {0} 出现未知错误:{1}。", new Object[]
+ { city.getCityName(), error.getMessage()} );
}
}
- try {
- logger.log(Level.INFO, "查询结束,休眠{0}分钟。", config.getQueryInterval());
- Thread.sleep(config.getQueryInterval() * 1000 * 60);
- } catch (InterruptedException error) {
- logger.log(Level.SEVERE, "线程休眠异常,错误信息:{0}", new Object[] { error.getMessage() });
+ try
+ {
+ logger.log( Level.INFO, "查询结束,休眠{0}分钟。", config.getQueryInterval() );
+ Thread.sleep( config.getQueryInterval() * 1000 * 60 );
+ }
+ catch ( InterruptedException error )
+ {
+ logger.log( Level.SEVERE, "线程休眠异常,错误信息:{0}", new Object[]
+ { error.getMessage()} );
}
}
}
@@ -128,16 +158,17 @@ public class AppMain {
/**
* 设置JUL的logger。
*/
- private static void setRootLogger() throws IOException {
+ private static void setRootLogger() throws IOException
+ {
LogManager logManager = LogManager.getLogManager();
// 使用外部的配置文件。
- FileInputStream configFile = new FileInputStream("./logging.properties");
+ FileInputStream configFile = new FileInputStream( "./logging.properties" );
// 使用jar中的配置文件。
// InputStream configFile =
// AppMain.class.getClassLoader().getResourceAsStream( "logging.properties" );
- logManager.readConfiguration(configFile);
+ logManager.readConfiguration( configFile );
- Logger.getLogger("com.cpicxim");
+ Logger.getLogger( "com.cpicxim" );
}
}
diff --git a/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/db/ProxySetting.java b/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/ProxySetting.java
similarity index 74%
rename from code/java/DisasterWarning/src/main/java/com/cpic/xim/config/db/ProxySetting.java
rename to code/java/DisasterWarning/src/main/java/com/cpic/xim/config/ProxySetting.java
index 6d82af7..1301737 100644
--- a/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/db/ProxySetting.java
+++ b/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/ProxySetting.java
@@ -8,7 +8,7 @@
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
-package com.cpic.xim.config.db;
+package com.cpic.xim.config;
import com.fasterxml.jackson.annotation.*;;
@@ -40,24 +40,24 @@ public class ProxySetting
this.proxyMode = proxyMode;
}
- public String getProxy_address()
+ public String getProxyAddress()
{
- return proxy_address;
+ return proxyAddress;
}
- public void setProxy_address( String proxy_address )
+ public void setProxyAddress( String proxy_address )
{
- this.proxy_address = proxy_address;
+ this.proxyAddress = proxy_address;
}
- public int getProxy_port()
+ public int getProxyPort()
{
- return proxy_port;
+ return proxyPort;
}
- public void setProxy_port( int proxy_port )
+ public void setProxyPort( int proxy_port )
{
- this.proxy_port = proxy_port;
+ this.proxyPort = proxy_port;
}
@Override
@@ -67,8 +67,8 @@ public class ProxySetting
int result = 1;
result = prime * result + (enable ? 1231 : 1237);
result = prime * result + ((proxyMode == null) ? 0 : proxyMode.hashCode());
- result = prime * result + ((proxy_address == null) ? 0 : proxy_address.hashCode());
- result = prime * result + proxy_port;
+ result = prime * result + ((proxyAddress == null) ? 0 : proxyAddress.hashCode());
+ result = prime * result + proxyPort;
return result;
}
@@ -90,13 +90,13 @@ public class ProxySetting
return false;
} else if ( !proxyMode.equals( other.proxyMode ))
return false;
- if ( proxy_address == null)
+ if ( proxyAddress == null)
{
- if ( other.proxy_address != null)
+ if ( other.proxyAddress != null)
return false;
- } else if ( !proxy_address.equals( other.proxy_address ))
+ } else if ( !proxyAddress.equals( other.proxyAddress ))
return false;
- if ( proxy_port != other.proxy_port)
+ if ( proxyPort != other.proxyPort)
return false;
return true;
}
@@ -108,9 +108,9 @@ public class ProxySetting
private String proxyMode = "http";
@JsonProperty( "proxy_address")
- private String proxy_address;
+ private String proxyAddress;
@JsonProperty( "proxy_port")
- private int proxy_port;
+ private int proxyPort;
}
diff --git a/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/WeatherDisasterNotifyConfig.java b/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/WeatherDisasterNotifyConfig.java
index fb04bba..2811cea 100644
--- a/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/WeatherDisasterNotifyConfig.java
+++ b/code/java/DisasterWarning/src/main/java/com/cpic/xim/config/WeatherDisasterNotifyConfig.java
@@ -11,7 +11,6 @@
package com.cpic.xim.config;
import java.util.Vector;
-import com.cpic.xim.config.db.ProxySetting;
import com.fasterxml.jackson.annotation.JsonProperty;
diff --git a/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/QWeatherDisasterWarningItem.java b/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/QWeatherDisasterWarningItem.java
index 0f7ecdb..4976134 100644
--- a/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/QWeatherDisasterWarningItem.java
+++ b/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/QWeatherDisasterWarningItem.java
@@ -11,145 +11,6 @@ public class QWeatherDisasterWarningItem
public QWeatherDisasterWarningItem()
{}
- public QWeatherDisasterWarningItem( String id, String sender, Date pubTime, String title,
- String status, String level, String severity, String severityColor, String type,
- String typeName, String text, String related, String urgency, String certainty)
- {
- this.id = id;
- this.sender = sender;
- this.pubTime = pubTime;
- this.title = title;
- this.status = status;
- this.level = level;
- this.severity = severity;
- this.severityColor = severityColor;
- this.type = type;
- this.typeName = typeName;
- this.text = text;
- this.related = related;
- this.urgency = urgency;
- this.certainty = certainty;
- }
-
- @Override
- public int hashCode()
- {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((certainty == null) ? 0 : certainty.hashCode());
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((level == null) ? 0 : level.hashCode());
- result = prime * result + ((pubTime == null) ? 0 : pubTime.hashCode());
- result = prime * result + ((related == null) ? 0 : related.hashCode());
- result = prime * result + ((sender == null) ? 0 : sender.hashCode());
- result = prime * result + ((severity == null) ? 0 : severity.hashCode());
- result = prime * result + ((severityColor == null) ? 0 : severityColor.hashCode());
- result = prime * result + ((status == null) ? 0 : status.hashCode());
- result = prime * result + ((text == null) ? 0 : text.hashCode());
- result = prime * result + ((title == null) ? 0 : title.hashCode());
- result = prime * result + ((type == null) ? 0 : type.hashCode());
- result = prime * result + ((typeName == null) ? 0 : typeName.hashCode());
- result = prime * result + ((urgency == null) ? 0 : urgency.hashCode());
- return result;
- }
-
- @Override
- public boolean equals( Object obj )
- {
- if ( this == obj)
- return true;
- if ( obj == null)
- return false;
- if ( getClass() != obj.getClass())
- return false;
- QWeatherDisasterWarningItem other = (QWeatherDisasterWarningItem) obj;
- if ( certainty == null)
- {
- if ( other.certainty != null)
- return false;
- } else if ( !certainty.equals( other.certainty ))
- return false;
- if ( id == null)
- {
- if ( other.id != null)
- return false;
- } else if ( !id.equals( other.id ))
- return false;
- if ( level == null)
- {
- if ( other.level != null)
- return false;
- } else if ( !level.equals( other.level ))
- return false;
- if ( pubTime == null)
- {
- if ( other.pubTime != null)
- return false;
- } else if ( !pubTime.equals( other.pubTime ))
- return false;
- if ( related == null)
- {
- if ( other.related != null)
- return false;
- } else if ( !related.equals( other.related ))
- return false;
- if ( sender == null)
- {
- if ( other.sender != null)
- return false;
- } else if ( !sender.equals( other.sender ))
- return false;
- if ( severity == null)
- {
- if ( other.severity != null)
- return false;
- } else if ( !severity.equals( other.severity ))
- return false;
- if ( severityColor == null)
- {
- if ( other.severityColor != null)
- return false;
- } else if ( !severityColor.equals( other.severityColor ))
- return false;
- if ( status == null)
- {
- if ( other.status != null)
- return false;
- } else if ( !status.equals( other.status ))
- return false;
- if ( text == null)
- {
- if ( other.text != null)
- return false;
- } else if ( !text.equals( other.text ))
- return false;
- if ( title == null)
- {
- if ( other.title != null)
- return false;
- } else if ( !title.equals( other.title ))
- return false;
- if ( type == null)
- {
- if ( other.type != null)
- return false;
- } else if ( !type.equals( other.type ))
- return false;
- if ( typeName == null)
- {
- if ( other.typeName != null)
- return false;
- } else if ( !typeName.equals( other.typeName ))
- return false;
- if ( urgency == null)
- {
- if ( other.urgency != null)
- return false;
- } else if ( !urgency.equals( other.urgency ))
- return false;
- return true;
- }
-
public String getId()
{
return id;
@@ -190,6 +51,26 @@ public class QWeatherDisasterWarningItem
this.title = title;
}
+ public Date getStartTime()
+ {
+ return startTime;
+ }
+
+ public void setStartTime( Date startTime )
+ {
+ this.startTime = startTime;
+ }
+
+ public Date getEndTime()
+ {
+ return endTime;
+ }
+
+ public void setEndTime( Date endTime )
+ {
+ this.endTime = endTime;
+ }
+
public String getStatus()
{
return status;
@@ -290,23 +171,187 @@ public class QWeatherDisasterWarningItem
this.certainty = certainty;
}
+ @Override
+ public int hashCode()
+ {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((sender == null) ? 0 : sender.hashCode());
+ result = prime * result + ((pubTime == null) ? 0 : pubTime.hashCode());
+ result = prime * result + ((title == null) ? 0 : title.hashCode());
+ result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
+ result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
+ result = prime * result + ((status == null) ? 0 : status.hashCode());
+ result = prime * result + ((level == null) ? 0 : level.hashCode());
+ result = prime * result + ((severity == null) ? 0 : severity.hashCode());
+ result = prime * result + ((severityColor == null) ? 0 : severityColor.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ result = prime * result + ((typeName == null) ? 0 : typeName.hashCode());
+ result = prime * result + ((text == null) ? 0 : text.hashCode());
+ result = prime * result + ((related == null) ? 0 : related.hashCode());
+ result = prime * result + ((urgency == null) ? 0 : urgency.hashCode());
+ result = prime * result + ((certainty == null) ? 0 : certainty.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( this == obj)
+ return true;
+ if ( obj == null)
+ return false;
+ if ( getClass() != obj.getClass())
+ return false;
+ QWeatherDisasterWarningItem other = (QWeatherDisasterWarningItem) obj;
+ if ( id == null)
+ {
+ if ( other.id != null)
+ return false;
+ } else if ( !id.equals( other.id ))
+ return false;
+ if ( sender == null)
+ {
+ if ( other.sender != null)
+ return false;
+ } else if ( !sender.equals( other.sender ))
+ return false;
+ if ( pubTime == null)
+ {
+ if ( other.pubTime != null)
+ return false;
+ } else if ( !pubTime.equals( other.pubTime ))
+ return false;
+ if ( title == null)
+ {
+ if ( other.title != null)
+ return false;
+ } else if ( !title.equals( other.title ))
+ return false;
+ if ( startTime == null)
+ {
+ if ( other.startTime != null)
+ return false;
+ } else if ( !startTime.equals( other.startTime ))
+ return false;
+ if ( endTime == null)
+ {
+ if ( other.endTime != null)
+ return false;
+ } else if ( !endTime.equals( other.endTime ))
+ return false;
+ if ( status == null)
+ {
+ if ( other.status != null)
+ return false;
+ } else if ( !status.equals( other.status ))
+ return false;
+ if ( level == null)
+ {
+ if ( other.level != null)
+ return false;
+ } else if ( !level.equals( other.level ))
+ return false;
+ if ( severity == null)
+ {
+ if ( other.severity != null)
+ return false;
+ } else if ( !severity.equals( other.severity ))
+ return false;
+ if ( severityColor == null)
+ {
+ if ( other.severityColor != null)
+ return false;
+ } else if ( !severityColor.equals( other.severityColor ))
+ return false;
+ if ( type == null)
+ {
+ if ( other.type != null)
+ return false;
+ } else if ( !type.equals( other.type ))
+ return false;
+ if ( typeName == null)
+ {
+ if ( other.typeName != null)
+ return false;
+ } else if ( !typeName.equals( other.typeName ))
+ return false;
+ if ( text == null)
+ {
+ if ( other.text != null)
+ return false;
+ } else if ( !text.equals( other.text ))
+ return false;
+ if ( related == null)
+ {
+ if ( other.related != null)
+ return false;
+ } else if ( !related.equals( other.related ))
+ return false;
+ if ( urgency == null)
+ {
+ if ( other.urgency != null)
+ return false;
+ } else if ( !urgency.equals( other.urgency ))
+ return false;
+ if ( certainty == null)
+ {
+ if ( other.certainty != null)
+ return false;
+ } else if ( !certainty.equals( other.certainty ))
+ return false;
+ return true;
+ }
+
+ @JsonProperty( "id")
private String id;
+
+ @JsonProperty( "sender")
private String sender;
@JsonProperty( "pubTime")
@JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
private Date pubTime;
+ @JsonProperty( "title")
private String title;
+
+ @JsonProperty( "startTime")
+ @JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
+ private Date startTime;
+
+ @JsonProperty( "endTime")
+ @JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd\'T\'HH:mmXXX")
+ private Date endTime;
+
+ @JsonProperty( "status")
private String status;
+
+ @JsonProperty( "level")
private String level;
+
+ @JsonProperty( "severity")
private String severity;
+
+ @JsonProperty( "severityColor")
private String severityColor;
+ @JsonProperty( "type")
private String type;
+
+ @JsonProperty( "typeName")
private String typeName;
+
+ @JsonProperty( "text")
private String text;
+
+ @JsonProperty( "related")
private String related;
+
+ @JsonProperty( "urgency")
private String urgency;
+
+ @JsonProperty( "certainty")
private String certainty;
}
diff --git a/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/WeatherDisasterWarningGrabber.java b/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/WeatherDisasterWarningGrabber.java
index 7e790a3..13035b7 100644
--- a/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/WeatherDisasterWarningGrabber.java
+++ b/code/java/DisasterWarning/src/main/java/com/cpic/xim/notify/disaster/WeatherDisasterWarningGrabber.java
@@ -4,17 +4,18 @@
*/
package com.cpic.xim.notify.disaster;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.BufferedReader;
-
-import java.net.MalformedURLException;
-import java.net.URL;
import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.net.MalformedURLException;
+import java.net.Proxy;
+import java.net.URL;
import java.util.zip.GZIPInputStream;
+import com.cpic.xim.config.ProxySetting;
+import com.fasterxml.jackson.databind.ObjectMapper;
/**
*
@@ -28,7 +29,7 @@ public class WeatherDisasterWarningGrabber
* @return 返回警报的json字符串
*/
public static String getWeatherDisasterWarningJSON( String queryURL, String userKey,
- String cityCode, boolean useProxy )
+ String cityCode, ProxySetting proxySetting )
{
// 拼接url字符串
String json = "";
@@ -44,7 +45,19 @@ public class WeatherDisasterWarningGrabber
try
{
url = new URL( requestURL );
- connection = (HttpURLConnection) url.openConnection();
+
+ // 是否要用代理服务器
+ if ( proxySetting.isEnable())
+ {
+ InetSocketAddress proxyAddress = new InetSocketAddress(
+ proxySetting.getProxyAddress(), proxySetting.getProxyPort() );
+ Proxy proxy = new Proxy( Proxy.Type.HTTP, proxyAddress );
+
+ connection = (HttpURLConnection) url.openConnection( proxy );
+ } else
+ {
+ connection = (HttpURLConnection) url.openConnection();
+ }
connection.setRequestMethod( "GET" );
connection.setConnectTimeout( 15000 );
diff --git a/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java b/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java
index f5189e3..29dce9f 100644
--- a/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java
+++ b/code/java/DisasterWarning/src/test/java/com/cpic/xim/wechat/officalAccount/sendMessageTest.java
@@ -2,7 +2,7 @@
* @Author: Kane
* @Date: 2022-04-22 10:53:49
* @LastEditors: Kane
- * @LastEditTime: 2022-05-12 09:54:36
+ * @LastEditTime: 2022-11-04 15:40:37
* @FilePath: \DisasterWarning\src\test\java\com\cpic\xim\wechat\officalAccount\sendMessageTest.java
* @Description:
*
diff --git a/数据/和风天气/看格式用.json b/数据/和风天气/看格式用.json
new file mode 100644
index 0000000..d6a41c8
--- /dev/null
+++ b/数据/和风天气/看格式用.json
@@ -0,0 +1,26 @@
+{
+ "code": "200",
+ "updateTime": "2022-11-04T15:18+08:00",
+ "fxLink": "http://hfx.link/3565",
+ "warning": [
+ {
+ "id": "10123020120221104060100024343791",
+ "sender": "厦门市气象台",
+ "pubTime": "2022-11-04T06:01+08:00",
+ "title": "厦门市气象台发布大风黄色预警[Ⅲ级/较重]",
+ "startTime": "2022-11-04T06:09+08:00",
+ "endTime": "2022-11-05T06:09+08:00",
+ "status": "active",
+ "level": "黄色",
+ "severity": "Moderate",
+ "severityColor": "Yellow",
+ "type": "1006",
+ "typeName": "大风",
+ "urgency": "",
+ "certainty": "",
+ "text": "厦门市气象台2022年11月04日06时01分发布大风黄色预警信号:受冷空气影响,未来12小时思明区、湖里区、集美区、海沧区及海上风力逐渐增强,预计厦门市区东北风最大可达5~6级、阵风7~8级;厦门内海及各大桥、高海拔山区最大可达6~7级、阵风8~9级;崇武到东山沿海最大可达7~8级、阵风9级;台湾海峡南部最大可达7~8级、阵风9~10级。请注意防范。同安区、翔安区请关注属地的预警信号发布情况。",
+ "related": ""
+ }
+ ],
+ "refer": { "sources": ["12379"], "license": ["no commercial use"] }
+}