⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 authenticationdemopanel.java

📁 java实现浏览器等本地桌面的功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            JXErrorDialog.showDialog(null, "Application Error", e);        }    }//GEN-LAST:event_simpleAuthDialogBtnActionPerformed            // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JLabel guestLabel;    private javax.swing.JEditorPane jEditorPane1;    private javax.swing.JLabel jLabel1;    private javax.swing.JLabel jLabel3;    private javax.swing.JLabel jLabel5;    private javax.swing.JPanel jPanel1;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JScrollPane jScrollPane2;    private javax.swing.JSplitPane jSplitPane1;    private javax.swing.JLabel messageLabel;    private org.jdesktop.swingx.JXList messageList;    private javax.swing.JButton romainAuthDialogBtn;    private javax.swing.JButton simpleAuthDialogBtn;    private javax.swing.JLabel subjectLabel;    private javax.swing.JLabel timestampLabel;    // End of variables declaration//GEN-END:variables        private static final class NullPasswordStore extends PasswordStore {        public boolean set(String username, String server, char[] password) {            return false;        }        public char[] get(String username, String server) {            return new char[0];        }    }        private final class NullLoginService extends LoginService {        NullLoginService() {            super("java.net");        }                public boolean authenticate(String name, char[] password, String server) {            try {                System.setProperty("http.proxyHost", "webcache.central");                System.setProperty("http.proxyPort", "8080");                URL url = new URL("http://www.javadesktop.org/forums/login!default.jspa?referrer=index.jspa");                HttpURLConnection conn = (HttpURLConnection)url.openConnection();                String sessionId = conn.getHeaderField("Set-cookie");                sessionId = sessionId.substring(0, sessionId.indexOf(";"));                System.out.println(sessionId);                conn.disconnect();                url = new URL("http://www.javadesktop.org/forums/login.jspa");                conn = (HttpURLConnection)url.openConnection();                conn.setInstanceFollowRedirects(false);                conn.setRequestProperty("Cookie", sessionId);                conn.setRequestMethod("POST");                String output = "username=" + name + "&password=" + new String(password) + "&autoLogin=true&doLogin=Login";                conn.setFixedLengthStreamingMode(output.length());                conn.setDoOutput(true);                OutputStream os = conn.getOutputStream();                os.write(output.getBytes());                os.flush();                String jiveAuthToken = conn.getHeaderField("Set-cookie");                jiveAuthToken = jiveAuthToken.substring(0, jiveAuthToken.indexOf(";"));                System.out.println(jiveAuthToken);                conn.disconnect();                url = new URL("http://javadesktop.org/forums/rss/rssthreads.jsp?forumID=53");                conn = (HttpURLConnection)url.openConnection();                conn.setInstanceFollowRedirects(false);                conn.setRequestProperty("Cookie", sessionId + "; " + jiveAuthToken);                InputStream is = conn.getInputStream();                byte[] data = new byte[1024];                int length = -1;                StringBuilder buffer = new StringBuilder();                while ((length = is.read(data)) != -1) {                    buffer.append(new String(data, 0, length));                }                is.close();                conn.disconnect();                                SAXParserFactory factory = SAXParserFactory.newInstance();                SAXParser parser = factory.newSAXParser();                parser.parse(new InputSource(new StringReader(buffer.toString())), new DefaultHandler() {                    private Stack<String> tags = new Stack<String>();                    private String data;                    private DataRow row;                    public void characters(char[] ch, int start, int length) throws org.xml.sax.SAXException {                        data = new String(ch, start, length);                    }                    public void startElement(String uri, String localName, String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException {                        tags.push(qName);                    }                    public void endElement(String uri, String localName, String qName) throws org.xml.sax.SAXException {                        String name = tags.pop();                        String parentName = tags.size() > 0 ? tags.peek() : null;                        //if the parent was "channel"                        if (parentName != null && parentName.equals("channel")) {                            if (name.equals("title")) {                                System.out.println("Title: " + data);                            } else if (name.equals("link")) {                                System.out.println("URL: " + data);                            } else if (name.equals("description")) {                                System.out.println("Description: " + data);                            } else if (name.equals("language")) {                                System.out.println("Language: " + data);                            }                        } else if (parentName != null && parentName.equals("item")) {                            //if the parent was "item"                            if (name.equals("title")) {                                row = messages.appendRow();                                row.setValue("messageId", messages.getRowCount());                                row.setValue("title", data);                            } else if (name.equals("link")) {                                row.setValue("link", data);                            } else if (name.equals("description")) {                                row.setValue("description", data);                            } else if (name.equals("jf:creationDate")) {                                row.setValue("creationDate", data);                            } else if (name.equals("jf:modificationDate")) {                                row.setValue("modificationDate", data);                            } else if (name.equals("jf:messageCount")) {                                row.setValue("messageCount", data);                            } else if (name.equals("jf:author")) {                                row.setValue("author", data);                            } else if (name.equals("jf:replyCount")) {                                row.setValue("replyCount", data);                                row.setStatus(DataRow.DataRowStatus.UNCHANGED);                                                                //now, load the thread data for this message                                try {                                    URL url = new URL((String)row.getValue("link"));                                    HttpURLConnection conn = (HttpURLConnection)url.openConnection();                                    InputStream is = conn.getInputStream();                                    byte[] data = new byte[1024];                                    int length = -1;                                    StringBuilder buffer = new StringBuilder();                                    while ((length = is.read(data)) != -1) {                                        buffer.append(new String(data, 0, length));                                    }                                    //iterate over all the lines                                    List<String> lines = Arrays.asList(buffer.toString().split("\\n"));                                    Iterator<String> itr = lines.iterator();                                    DataRow threadRow = null;                                    while (itr.hasNext()) {                                        String line = itr.next();                                        if (line.contains("<span class=\"jive-guest\">")) {                                            String guest = parseGuest(itr);                                            if (!guest.startsWith("<nobr>")) {                                                threadRow = threads.appendRow();                                                threadRow.setValue("guest", guest);                                                threadRow.setValue("messageId", row.getValue("messageId"));                                            }                                        } else if (line.contains("<span class=\"jive-subject\">")) {                                            String subject = parseSubject(itr);                                            if (threadRow != null) {                                                threadRow.setValue("subject", subject);                                                String timestamp = parseTimestamp(itr);                                                threadRow.setValue("timestamp", timestamp);                                            }                                        } else if (line.contains("<td colspan=\"2\" style=\"border-top: 1px #ccc solid;\">")) {                                            String message = parseMessage(itr);                                            if (threadRow != null) {                                                threadRow.setValue("message", message);                                                threadRow.setStatus(DataRow.DataRowStatus.UNCHANGED);                                            }                                        }                                    }                                } catch (Exception e) {                                    e.printStackTrace();                                }                            }                        }                    }                });                                return true;            } catch (Exception e) {                e.printStackTrace();                return false;            }        }        private String parseGuest(Iterator<String> itr) {            StringBuilder buffer = new StringBuilder();            while (itr.hasNext()) {                String line = itr.next();                if (line.contains("</span>")) {                    return buffer.toString().trim();                } else {                    buffer.append(removeBreakTags(line));                }            }            return "";        }        private String parseSubject(Iterator<String> itr) {            StringBuilder buffer = new StringBuilder();            while (itr.hasNext()) {                String line = itr.next();                if (line.contains("</span>")) {                    return buffer.toString().trim();                } else if (line.contains("<a")) {                    //skip it                } else {                    //if the line contains any <br> tags, remove them                    buffer.append(removeBreakTags(line));                }            }            return "";        }        private String parseTimestamp(Iterator<String> itr) {            StringBuilder buffer = new StringBuilder();            while (itr.hasNext()) {                String line = itr.next();                if (line.contains("</td>")) {                    return buffer.toString().trim();                } else if (line.contains("Posted:")) {                    //skip it                } else {                    buffer.append(removeBreakTags(line));                }            }            return "";        }        private String parseMessage(Iterator<String> itr) {            StringBuilder buffer = new StringBuilder();            while (itr.hasNext()) {                String line = itr.next();                if (line.contains("</td>")) {                    return buffer.toString().trim();                } else {                    buffer.append(line);                }            }            return "";        }        private String removeBreakTags(String line) {            return line.replaceAll("\\<br\\>", "");        }    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -