package org.arong.egdownloader.ui.window; import java.awt.Color; import java.awt.Window; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.net.SocketTimeoutException; import java.util.HashMap; import java.util.Map; import java.util.UUID; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; import org.apache.commons.httpclient.ConnectTimeoutException; import org.arong.egdownloader.spider.WebClient; import org.arong.egdownloader.spider.WebClientException; import org.arong.egdownloader.ui.ComponentUtil; import org.arong.egdownloader.ui.listener.MouseAction; import org.arong.egdownloader.ui.listener.OperaBtnMouseListener; import org.arong.egdownloader.ui.swing.AJButton; import org.arong.egdownloader.ui.swing.AJLabel; import org.arong.egdownloader.ui.swing.AJTextField; import org.arong.egdownloader.ui.work.interfaces.IListenerTask; import org.arong.util.Tracker; /** * 登录窗口 * @author 阿荣 * @since 2014-06-27 */ public class LoginWindow extends JDialog { private static final long serialVersionUID = 1L; public JTextField userTextField; JPasswordField pwdPasswordField; public static void main(String[] args) throws ConnectTimeoutException, SocketTimeoutException, WebClientException { Map<String, String> params = new HashMap<String, String>(); params.put("referer", "http://forums.e-hentai.org/index.php"); params.put("b", ""); params.put("bt", ""); params.put("UserName", "waprong"); params.put("PassWord", "19890226");// params.put("CookieDate", "1"); String cookieInfo = WebClient.getCookieByPostWithoutCookie("https://forums.e-hentai.org/index.php?act=Login&CODE=01", "UTF-8", params); System.out.println(cookieInfo); cookieInfo = WebClient.getCookieByPostWithCookie("http://exhentai.org/", "UTF-8", null, cookieInfo); System.out.println(cookieInfo); } public LoginWindow(EgDownloaderWindow mainWindow){ this.setTitle("登录"); this.setSize(300, 200); this.setLayout(null); this.setResizable(false); this.setLocationRelativeTo(null); JLabel userLabel = new AJLabel("用户名:", Color.BLUE, 10, 20, 60, 30); userTextField = new AJTextField("", 60, 20, 200, 30); JLabel pwdLabel = new AJLabel("密 码:", Color.BLUE, 10, 60, 60, 30); pwdPasswordField = new JPasswordField(); pwdPasswordField.setBounds(60, 60, 200, 30); final LoginWindow this_ = this; JButton loginButton = new AJButton("登录", "", null, new OperaBtnMouseListener(mainWindow, MouseAction.CLICK, new IListenerTask() { public void doWork(Window window, MouseEvent e) { EgDownloaderWindow mainWindow = (EgDownloaderWindow)window; SettingWindow settingWindow = (SettingWindow) mainWindow.settingWindow; String user = settingWindow.loginWindow.userTextField.getText(); String pwd = String.valueOf(settingWindow.loginWindow.pwdPasswordField.getPassword()); if("".equals(user)){ JOptionPane.showMessageDialog(this_, "请填写用户名"); return; }else if("".equals(pwd)){ JOptionPane.showMessageDialog(this_, "请填写密码"); return; }else{ try { if("".equals(settingWindow.loginUrlField.getText())){ JOptionPane.showMessageDialog(this_, "请填写登录地址"); return; } Map<String, String> params = new HashMap<String, String>(); params.put("referer", "http://forums.e-hentai.org/index.php?"); params.put("b", ""); params.put("bt", ""); params.put("UserName", user); params.put("PassWord", pwd);// params.put("CookieDate", "1"); String cookieInfo = WebClient.getCookieByPostWithCookie(settingWindow.loginUrlField.getText(), "UTF-8", params, "igneous=" + UUID.randomUUID().toString() + ";"); if("".equals(cookieInfo) || cookieInfo.indexOf("ipb_pass") == -1){ JOptionPane.showMessageDialog(this_, "登录失败"); return; }else{ //访问内页获取更多cookie cookieInfo += WebClient.getCookieByPostWithCookie("http://exhentai.org/", "UTF-8", null, cookieInfo); settingWindow.cookieArea.setText(cookieInfo); settingWindow.loginWindow.dispose(); settingWindow.setVisible(true); } } catch (Exception e1) { Tracker.println(LoginWindow.class, e1.getMessage()); JOptionPane.showMessageDialog(this_, "登录失败"); return; } } } }), 120, 100, 60, 30); ComponentUtil.addComponents(getContentPane(), userLabel, userTextField, pwdLabel, pwdPasswordField, loginButton); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { LoginWindow this_ = (LoginWindow) e.getSource(); this_.dispose(); } }); } }