帮朋友的忙写了个小应用,他需要每隔一段时间自动访问一个网页,如果发现特定的内容就弹框提醒和声音提醒,一条消息已经提醒过了就不用再次提醒了,只有遇到新的才提醒。
这是一个小功能,一会儿就搞完了,把里面的知识点简单梳理一下:
1.定时访问网页:
(1)定时器jdk自带了,直接使用就行.
(2)访问网页抓取内容可以使用httpclient,这是比较常用的框架.
GetMethod getMethod = new GetMethod(newUrl);
int statusCode = httpClient.executeMethod(getMethod);
byte[] responseBody = getMethod.getResponseBody();
2.解析网页,查找是否包含所需要内容
InputStream inputStream = new ByteArrayInputStream(bytes); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); for (String line = reader.readLine(); line != null; line = reader.readLine()) { //比较判断逻辑.... }
3.弹框提醒import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JLabel; import javax.swing.WindowConstants; public class DialogMessage extends javax.swing.JFrame { private JLabel text; Toolkit tk = Toolkit.getDefaultToolkit(); Dimension screenSize = tk.getScreenSize(); int height = screenSize.height; int width = screenSize.width; private String str = null; public DialogMessage(String str) { this.str = str; new Thread(new Runnable() { @Override public void run() { initGUI(); } }).start(); } private void initGUI() { try { setUndecorated(true); setLocationRelativeTo(null); setVisible(true); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { text = new JLabel("<html>" + str + "</html>", JLabel.CENTER); getContentPane().add(text, BorderLayout.CENTER); text.setBackground(new java.awt.Color(255, 251, 240)); } pack(); setBounds(width - 380, height - 150, 360, 100); try { Thread.sleep(9000); } catch (InterruptedException e1) { e1.printStackTrace(); } dispose(); } catch (Exception e) { e.printStackTrace(); } } }
4.声音提醒//Toolkit.getDefaultToolkit().beep();//系统默认提示音 Clip clip = AudioSystem.getClip();//调用外部文件定义的声音 AudioInputStream inputStream = AudioSystem.getAudioInputStream(SoundMessage.class.getResourceAsStream(url)); clip.open(inputStream); clip.start();
最后,附上完整代码下载地址:http://download.csdn.net/detail/lk_blog/9150901