TA的每日心情 | 开心 2021-8-30 00:00 |
---|
签到天数: 35 天 [LV.5]常住居民I
|
为了用Java编写一个邮件群发软件,接触到了htmlunit,没太大技术含量,仅是使用htmlunit经验。
view sourceprint?
import java.io.IOException; |
import java.net.MalformedURLException; |
import java.util.regex.Matcher; |
import java.util.regex.Pattern; |
import com.gargoylesoftware.htmlunit.BrowserVersion; |
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; |
import com.gargoylesoftware.htmlunit.HttpMethod; |
import com.gargoylesoftware.htmlunit.WebClient; |
import com.gargoylesoftware.htmlunit.WebRequest; |
import com.gargoylesoftware.htmlunit.html.HtmlForm; |
import com.gargoylesoftware.htmlunit.html.HtmlInput; |
import com.gargoylesoftware.htmlunit.html.HtmlPage; |
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; |
import com.gargoylesoftware.htmlunit.util.NameValuePair; |
private WebClient client; |
private WebRequest request; |
private String hostSinaUrl = ""; |
public static void main(String[] args) |
throws FailingHttpStatusCodeException, MalformedURLException, |
String newpassword = "***"; |
MySina mySina = new MySina(); |
if(mySina.mailLoginBySina(username, password)){ //登录 |
mySina.updatePwdBySina(password,newpassword); //修改密码 |
mySina.updateNickName(nickname); //修改帐户昵称 |
System.out.println("登录失败!请检查用户名和密码是否正确!"); |
client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8); |
client.setJavaScriptEnabled(false); |
* @throws FailingHttpStatusCodeException |
public boolean updateNickName(String nickname) |
throws FailingHttpStatusCodeException, IOException { |
String sinaSetUrl = hostSinaUrl + "basic/setting_account"; |
request = new WebRequest(new URL(sinaSetUrl),HttpMethod.POST); |
request.setCharset("utf-8"); |
request.setRequestParameters(Arrays.asList( |
new NameValuePair("nickname", nickname), |
new NameValuePair("pop3", "on"), |
new NameValuePair("imap", "on"))); |
HtmlPage p = client.getPage(hostSinaUrl + "classic/index.php"); |
if (p.getBody().getTextContent() |
.indexOf("\"NickName\":\"" + nickname + "\"") > 0) { |
* @throws FailingHttpStatusCodeException |
public boolean updatePwdBySina(String oldpassword, String newpassword) |
throws FailingHttpStatusCodeException, IOException { |
request = new WebRequest(new URL(sinaSetUrl),HttpMethod.POST); |
request.setCharset("gbk"); |
request.setRequestParameters(Arrays.asList( |
new NameValuePair("pass",oldpassword), |
new NameValuePair("pass1", newpassword), |
new NameValuePair("pass2", newpassword))); |
HtmlPage p = client.getPage(request); |
if (p.getBody().getTextContent().indexOf("您的密码修改成功") > 0) { |
* @throws FailingHttpStatusCodeException |
* @throws MalformedURLException |
public boolean mailLoginBySina(String username, String password) |
throws FailingHttpStatusCodeException, MalformedURLException, |
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) { |
hostSinaUrl = myRegex(resultUrl, regex, null); |
if (hostSinaUrl.length() > 0) { |
public String myRegex(String str, String reg, String[] replace) { |
Matcher m = Pattern.compile(reg).matcher(str); |
if (replace != null && replace.length > 0) { |
for (String s : replace) { |
result = result.replace(s, ""); |
没太大技术含量,仅是使用htmlunit经验。
该贴已经同步到 sunwy的微博 |
|