1接入微信公众号定时巡检自己的接口
申请公众号(获取URL和token)
买一台服务器(配置一个自动化脚本定期访问项目接口,讲公众号的token配置到脚本中)
2写一个给指定人发送信息的接口
package org.example.controller;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.KeyEvent;
/**
* 微信自动搜索发送消息
*/
public class T5 {
public static void main(String[] args) throws InterruptedException {
// 好友昵称
String friendNickName = "文件传输助手";
searchMyFriendAndSend(friendNickName);
}
private static void searchMyFriendAndSend(String friendNickName) throws InterruptedException {
// 创建Robot对象
Robot robot = getRobot();
//打开微信 Ctrl+Alt+W
assert robot != null;
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_W);
//释放Ctrl按键,像Ctrl,退格键,删除键这样的功能性按键,在按下后一定要释放
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_ALT);
// 该延迟不能少,否则无法搜索
robot.delay(1000);
// Ctrl + F 搜索指定好友
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_F);
robot.keyRelease(KeyEvent.VK_CONTROL);
// 将好友昵称发送到剪切板
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable tText = new StringSelection(friendNickName);
clip.setContents(tText, null);
// 以下两行按下了ctrl+v,完成粘贴功能
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(1000);
// 发送消息
sendMsg();
}
private static void sendMsg() throws InterruptedException {
//讲这里的换成自己像发送的消息
//比如:获取每天的天气
Map<String, Object> map =WeatherUtil.getTodayWeather("杭州");
String[] mottoes = {
//处理之后的map转换为自己想要的String数据
"早上好"
};
for (String motto : mottoes) {
sendOneMsg(motto);
}
Thread.sleep(2000);
sendOneMsg("[得意]就问你,腻不腻害!");
}
private static void sendOneMsg(String msg) {
// 创建Robot对象
Robot robot = getRobot();
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
// 将字符串复制到剪切板
Transferable tText = new StringSelection(msg);
clip.setContents(tText, null);
// 以下两行按下了ctrl+v,完成粘贴功能
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
// 回车发送
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(1000);
}
private static Robot getRobot(){
// 创建Robot对象
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
return robot;
}
}
public class WeatherUtil {
public static void main(String[] args) throws IOException {
System.out.println(getTodayWeather("杭州市"));
}
public static Map<String, Object> getTodayWeather(String cityName){
try {
HttpClient client = new DefaultHttpClient();
//发送get请求
HttpGet request = new HttpGet("http://portalweather.comsys.net.cn/weather03/api/weatherService/getDailyWeather?cityName="+cityName);
HttpResponse response = client.execute(request);
/**请求发送成功,并得到响应**/
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
String strResult = EntityUtils.toString(response.getEntity());
// 处理数据,封装为map形式返回
JSONObject resJson = JSONObject.fromObject(strResult);
String results = resJson.get("results").toString();
JSONArray resArray = (JSONArray)JSONArray.parse(results);
JSONObject jsob = JSONObject.fromObject(resArray.get(0).toString());
JSONArray zrray = (JSONArray)JSONArray.parse(jsob.get("daily").toString());
Map<String, Object> map = (Map<String, Object>)zrray.get(0);
int value = LocalDate.now().getDayOfWeek().getValue(); //周几
map.put("taday_week", getWeekByIntValue(value));
return map;
}
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static String getWeekByIntValue(int value){
String taday = "星期";
if(value == 1){
taday = taday + "一";
} else if(value == 2){
taday = taday + "二";
}else if(value == 3){
taday = taday + "三";
}else if(value == 4){
taday = taday + "四";
}else if(value == 5){
taday = taday + "五";
}else if(value == 6){
taday = taday + "六";
}else if(value == 7){
taday = taday + "天";
}
return taday;
}
}