`
sydxide2006
  • 浏览: 69849 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

写程序模拟通过web界面登录mail.people.com.cn。并通过web界面获得收件箱第一页的邮件列表。

阅读更多

入口参数:<o:p></o:p>

       用户名 / 密码 <o:p></o:p>

l        请写出程序,输出邮件标题列表<o:p></o:p>

(提示:mail.people.com.cn登录就是普通的http方式,也没有图片验证码。注意是通过web登录,不是通过pop3收邮件)

解题思路:用到httpunit包模拟WEB用户登陆,登陆成功,保存COOKIE到本地,在邮件列表时候,将COOKIE一起发送到服务器端<o:p></o:p>

源代码清单:JavaWebPeoperEmail.java 实现了用户登陆和列表邮件的标题的。功能。<o:p></o:p>

 

<o:p></o:p>
分享到:
评论
1 楼 sydxide2006 2007-09-28  
import java.io.*;
import java.net.*;
import javax.servlet.ServletException;
import com.meterware.httpunit.ClientProperties;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebResponse;
import com.meterware.httpunit.WebTable;
import org.xml.sax.*;
import com.meterware.httpunit.WebForm;
import com.meterware.httpunit.WebRequest;
import java.util.Vector;
import com.meterware.httpunit.HttpUnitOptions;
/**
 * 模拟通过web界面登录mail.people.com.cn。并通过web界面获得收件箱第一页的邮件列表
 * 本程序使用的是用户名/密码:qwerty/123456的邮件
 * @version 1.0
 */
public class JavaWebPeoperEmail{
	public static Vector v1=new Vector();//保存COOkie的名称
	public static Vector v2=new Vector();//保存COOkie的值
	String location="";//保存生成的随机码,人民邮件需要用到URL上
	String loginname="qwerty";//人民邮件登陆用户名
	String password="123456";//人民邮件登陆密码
	WebConversation wc = null;
	ClientProperties cp =null;
	WebRequest   req =null;
	WebResponse  resp = null;
	WebForm form=null;
	public void init(){
		
   	 /**
   	  * 定义浏览器的属性,由于人民邮箱的cookie的设置是在登陆的中转页面上,
   	  * 所有设置cp.setAutoRedirect(false);否则设置为cp.setAutoRedirect(true)会得不到cookie
   	  */
		wc = new WebConversation();
        cp = wc.getClientProperties();       
        cp.setUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050223 Firefox/1.0.1");    
        cp.setAcceptCookies(true);
        cp.setAutoRedirect(false);
        cp.setIframeSupported(true);
        cp.setAcceptGzip(true);
        HttpUnitOptions.setExceptionsThrownOnScriptError(false); 
	}
    /**
     * 先登陆后列邮件
     * @throws SAXException 
     * @throws IOException 
     * @throws MalformedURLException 
     * @throws ServletException 
     */
    public void process() throws MalformedURLException, IOException, SAXException {
    	
    	req = new GetMethodWebRequest("http://mail.people.com.cn/extend/b5/");
      	resp = wc.getResponse(req);
	   /** 
        * 采用表单登陆
        */
        
			form = resp.getFormWithName("login");
	     form.setParameter("LoginName", loginname);
         form.setParameter("passwd", password);
    	 WebResponse rs;
			rs = form.submit();
	    /** 
         * 得到cookie,且保存
         */
    	 String[] str = rs.getNewCookieNames();
         for(int i=0;i<str.length;i++){
         v1.add(str[i]);
       	 v2.add(rs.getNewCookieValue(str[i]));
       	 }
         /**
          * 取得LOCATION,且保存
          */
         String[] str1 = rs.getHeaderFieldNames();
         for(int i=0;i<str1.length;i++){
   		 if(str1[i].equalsIgnoreCase("LOCATION")){
   			location=rs.getHeaderField(str1[i]);
   		 	}
   		 }
   		 /** 
   		  * 为模拟浏览器设置cookie
   		  */
   		for(int i=0;i<v1.size();i++){
   		 wc.putCookie((String)v1.get(i),(String)v2.get(i) );	 
   		}   		
   		 /**
   		  * 打印邮件列表
   		  */
   		req = new GetMethodWebRequest("http://mail.people.com.cn/extend/gb/std/qwerty/"+location.substring(22,52)+"/Headers.gen?CurPath=/Inbox&Request=List&SuUser=&Status");
   		resp = wc.getResponse(req);
   		WebTable[] table=resp.getTables();
   		String[][] str11=table[3].asText();
   		for(int i=0;i<10;i++){
   			System.out.println(str11[i][4]);
   		}
     }
      
   
    /** 
     * 测试方法
     * @param args
     * @throws MalformedURLException
     * @throws SAXException
     * @throws IOException
     * @throws ServletException
     */
    public static void main(String[] args) throws MalformedURLException, SAXException, IOException, ServletException  {
    	JavaWebPeoperEmail webLogin=new JavaWebPeoperEmail();
    	webLogin.init();
    	webLogin.process();
}

}

相关推荐

    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面.

    Android Intent 跳转到系统应用中的拨号界面、联系人界面、短信界面 在 Android 开发中,Intent 是一个非常重要的概念,它允许不同的应用程序之间进行交互和通信。在本文中,我们将探讨如何使用 Intent 跳转到系统...

    Web.Performance.in.Action.Building.Faster.Web.Pages.epub

    People are browsing the web through a greater variety of devices and networks than ever before. Your website's visitors may be browsing via resource constrained connections, or limited by restricted ...

    Web.Client.Programming.with.Perl.Automating.Tasks.on.the.Web.pdf

    The World Wide Web has been credited with bringing the Internet to the masses. The Internet was previously the stomping ground of academics and a small, elite group of computer professionals, mostly...

    公司招聘异地笔试题.doc

    为了实现通过Web界面登录特定网站并获取邮件列表的功能,可以使用Selenium WebDriver进行页面自动化操作。以下是一个使用Selenium的Java程序示例: ```java import org.openqa.selenium.By; import org.openqa....

    PyPI 官网下载 | onegov.people-0.0.2.tar.gz

    压缩包子文件的文件名称列表中只包含了一个条目:`onegov.people-0.0.2`,这通常是Python项目的源代码包。解压后,通常会包含`setup.py`文件,用于定义包的元数据和安装过程;`MANIFEST.in`文件,指定哪些非源代码...

    Designing.Products.People.Love.2015.12.pdf

    通过一系列的调研方法和技术,设计者可以准确地把握用户的需求,并将其转化为具体的设计决策。 - **用户画像**: 构建详细的用户画像,包括年龄、性别、职业、兴趣爱好等基本信息,以便更准确地理解用户。 - **用户...

    Python 写了个新型冠状病毒疫情传播模拟程序

    该程序通过模拟个体之间的交互过程来展示病毒是如何在一个群体中传播的,并强调了隔离措施对于遏制疫情的重要性。鉴于Java版源码已经公开,许多开发者开始尝试使用其他编程语言进行重写或优化,其中包括Python版。 ...

    Build.Your.Own.Web.Site.The.Right.Way.Using.HTML .CSS .pdf

    Numerous books have been written on the topics of web design and programming, as have many free tutorials that you can read on the 。ッNet. Many of them were written during those heady years, and were...

    Tagging People powered Metadata for the Social Web - New Riders Press.rar

    《Tagging People powered Metadata for the Social Web》是New Riders Press出版的一部专著,主要探讨了在社交网络中人们如何通过标签系统来组织和管理元数据。这本书深入研究了“标记”这一概念,它是Web 2.0时代...

    JavaWeb实验报告(1).pdf

    Java Web 开发是计算机科学与技术专业中一个重要的实践环节,这个实验报告主要涵盖了Java Web环境的搭建、JSP编程基础以及JSP指令和动作标记的使用。实验目的是让学生掌握JDK、Tomcat和MyEclipse等工具的配置,以及...

    HZBooks.,Tagging,People-Powerd.Metadata.For.the.Social.Web,.标签_标记系统设计实践

    HZBooks.,Tagging,People-Powerd.Metadata.For.the.Social.Web,.标签_标记系统设计实践

    Java 课程设计 程序代码

    Java 课程设计 程序代码 一共包含15个不同的程序系统 目录 第1章 记忆测试软件 1.1. 设计内容 1.2. 设计要求 1.3. 总体设计 1.4. 具体设计 1.4.1. 运行效果与程序发布 1.4.2. 主类Memory 1.4.3. 方块 Block 1.4.4. ...

Global site tag (gtag.js) - Google Analytics