HtmlUnit简单使用

电脑杂谈  发布时间:2017-03-30 12:00:18  来源:网络整理

HtmlUnit简单使用为了用Java编写一个邮件群发软件,接触到了htmlunit,没太大技术含量,仅是使用htmlunit经验。importjava.io.IOException;importjava.net.MalformedURLException;importjava.net.URL;importjava.util.Arrays;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importcom.gargoylesoftware.htmlunit.BrowserVersion;importcom.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;importcom.gargoylesoftware.htmlunit.HttpMethod;importcom.gargoylesoftware.htmlunit.WebClient;importcom.gargoylesoftware.htmlunit.WebRequest;importcom.gargoylesoftware.htmlunit.html.HtmlForm;importcom.gargoylesoftware.htmlunit.html.HtmlInput;importcom.gargoylesoftware.htmlunit.html.HtmlPage;importcom.gargoylesoftware.htmlunit.html.HtmlSubmitInput;importcom.gargoylesoftware.htmlunit.util.NameValuePair;publicclassMySina {privateWebClient client;privateWebRequest request;privateString sinaLoginUrl = "http://mail.sina.com.cn/cgi-bin/login.php";privateString hostSinaUrl = "";publicstaticvoidmain(String[] args)throwsFailingHttpStatusCodeException, MalformedURLException,IOException {String username = "***";String password = "***";String newpassword = "***";String nickname = "***";MySina mySina = newMySina();if(mySina.mailLoginBySina(username, password)){ //登录mySina.updatePwdBySina(password,newpassword); //修改密码mySina.updateNickName(nickname); //修改帐户昵称}else{System.out.println("登录失败!请检查用户名和密码是否正确!");}}publicMySina() {client = newWebClient(BrowserVersion.INTERNET_EXPLORER_8);client.setJavaScriptEnabled(false);}/**** 更改帐户昵称** @param nickname* 昵称* @return boolean* @throws FailingHttpStatusCodeException* @throws IOException*/publicbooleanupdateNickName(String nickname)throwsFailingHttpStatusCodeException, IOException {String sinaSetUrl = hostSinaUrl + "basic/setting_account";request = newWebRequest(newURL(sinaSetUrl),HttpMethod.POST);request.setCharset("utf-8");request.setRequestParameters(Arrays.asList(newNameValuePair("nickname", nickname),newNameValuePair("pop3", "on"),newNameValuePair("imap", "on")));client.getPage(request);HtmlPage p = client.getPage(hostSinaUrl + "classic/index.php");if(p.getBody().getTextContent().indexOf("\"NickName\":\""+ nickname + "\"") > 0) {returntrue;} else{returnfalse;}}/**** 修改密码** @param oldpassword* 旧密码* @param newpassword* 新密码* @return boolean* @throws FailingHttpStatusCodeException* @throws IOException*/publicbooleanupdatePwdBySina(String oldpassword, String newpassword)throwsFailingHttpStatusCodeException, IOException {String sinaSetUrl = "http://login.sina.com.cn/member/security/password.php";request = newWebRequest(newURL(sinaSetUrl),HttpMethod.POST);request.setCharset("gbk");request.setRequestParameters(Arrays.asList(newNameValuePair("pass",oldpassword),newNameValuePair("pass1", newpassword),newNameValuePair("pass2", newpassword)));HtmlPage p = client.getPage(request);if(p.getBody().getTextContent().indexOf("您的密码修改成功") > 0) {returntrue;} else{returnfalse;}}/*** 登录** @param username* 用户名* @param password* 密码* @return boolean* @throws FailingHttpStatusCodeException* @throws MalformedURLException* @throws IOException*/publicbooleanmailLoginBySina(String username, String password)throwsFailingHttpStatusCodeException, MalformedURLException,IOException {HtmlPage loginPage = client.getPage(sinaLoginUrl);HtmlForm loginForm = loginPage.getFormByName("free");HtmlInput u = loginForm.getInputByName("u");HtmlInput psw = loginForm.getInputByName("psw");HtmlSubmitInput loginButton = loginForm.getInputByName("登录");u.setValueAttribute(username);psw.setValueAttribute(password);HtmlPage result = loginButton.click();String resultUrl = result.getUrl().toString();if(resultUrl.indexOf("classic/index.php") > 0) {String regex = "http://(.*?)/";hostSinaUrl = myRegex(resultUrl, regex, null);if(hostSinaUrl.length() > 0) {returntrue;} else{returnfalse;}} else{returnfalse;}}/**** 正则匹配替换** @param str* @param reg* @param replace* @return*/publicString myRegex(String str, String reg, String[] replace) {String result = null;Matcher m = Pattern.compile(reg).matcher(str);while(m.find()) {result = m.group();if(replace != null&& replace.length > 0) {for(String s : replace) {result = result.replace(s, "");}}}returnresult;}}没太大技术含量,仅是使用htmlunit经验。htmlunithtmlunit附上htmlunit jar文件和API


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-38448-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...