public class ADR {
private static int YEAR=0;
private static int MONTH=1;
private static int DAY=2;
/**
*
* @param user
* @param pass
* @return
* @throws Exception
*/
private static String loginJh(String user , String pass) throws Exception{
URL url = new URL("http://jh.livedoor.cn/cgi-bin/cookie/login.pl");
HttpURLConnection hconn=(HttpURLConnection)url.openConnection();
hconn.setDoOutput(true);
hconn.setDoInput(true);
hconn.setRequestMethod("POST");
/**
* fill login name and pass
*/
hconn.getOutputStream().write(("name="+user+"&password="+pass).getBytes());
hconn.getOutputStream().flush();
hconn.getOutputStream().close();
/**
* check response code.
*/
if(hconn.getResponseCode()!=HttpURLConnection.HTTP_OK){
throw new Exception("Login jh err! description:"+hconn.getResponseMessage());
}
/**
* Get cookie
*/
StringBuffer cookie =new StringBuffer();
Map> header=hconn.getHeaderFields();
List c=header.get("Set-Cookie");
for(int i=0;c!=null && i');";
BufferedReader bis =new BufferedReader(new InputStreamReader(hconn.getInputStream() , "GBK"));
StringBuffer sb=new StringBuffer();
while(bis.ready()){
sb.append((char)bis.read());
}
if(!sb.toString().equals(target_html)){
throw new Exception("Login target web page is err!");
}
hconn.disconnect();
return cookie.toString();
}
/**
*
* @param cookie
* @throws Exception
*/
private static void writeDailyReport(String cookie , String pj_id , String mem_id , String rumor) throws Exception{
/**
* project id
* Security = 80
*/
String p1="pj_id="+pj_id+"&";
/**
* mem_id
* huangcm mem_id=430
*/
String p1_5="mem_id="+mem_id+"&";
/**
* submit date&time
*/
String sdate[]=getStrDate(new Date());
String p2="c_year="+sdate[YEAR]+"&c_month="+sdate[MONTH]+"&c_day="+sdate[DAY]+"&";
String p3="start_hour=8&start_min=0&end_hour=19&end_min=30&";
/**
* work time 8
*/
String p4="job_time"+pj_id+"=8&";
String p5="job_content"+pj_id+"="+rumor+"&";
String p6="sum="+rumor+"&";
String p7="question=&";
String p8="experience=&";
/**
* next day
*/
String ndate[]=getStrDate(ADR.getNextDay());
String p9="n_year="+ndate[YEAR]+"&n_month="+ndate[MONTH]+"&n_day="+ndate[DAY]+"&";
/**
* next plan
*/
String p10="plan="+rumor;
/**
* submit daily report
*/
URL url2 = new URL("http://jh.livedoor.cn//cgi-bin/project/pm_rp_add_done.pl");
HttpURLConnection hconn=(HttpURLConnection)url2.openConnection();
hconn.setDoOutput(true);
hconn.setDoInput(true);
hconn.setRequestMethod("POST");
hconn.setRequestProperty("Cookie", cookie);
hconn.getOutputStream().write((p1+p1_5+p2+p3+p4+p5+p6+p7+p8+p9+p10).getBytes());
hconn.getOutputStream().flush();
hconn.getOutputStream().close();
if(hconn.getResponseCode()!=HttpURLConnection.HTTP_OK){
throw new Exception("Write daily report err! description:["+hconn.getResponseCode()+"]"+hconn.getResponseMessage());
}
// BufferedReader bis =new BufferedReader(new InputStreamReader(hconn.getInputStream() , "GBK"));
// StringBuffer sb=new StringBuffer();
// while(bis.ready()){
// sb.append(bis.readLine()+"/n");
// }
// System.out.println(sb.toString());
hconn.disconnect();
}
/**
*
* @param format
* @return
*/
private static String[] getStrDate(Date date){
String r[]=new String[3];
r[YEAR]=new SimpleDateFormat("yyyy").format(date);
r[MONTH]=String.valueOf(Integer.parseInt(new SimpleDateFormat("MM").format(date)));
r[DAY]=String.valueOf(Integer.parseInt(new SimpleDateFormat("dd").format(date)));
return r;
}
private static Date getNextDay(){
Calendar c=Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH,1);
return c.getTime();
}
/**
* Send mail to mail.livedoor.cn
* @param user
* @param pass
* @param subject
* @param content
*/
private static void sendMail(String user,String pass,String subject,String content){
Socket socketSmtpServer = null;
BufferedWriter dos = null;
BufferedReader dis = null;
try {
socketSmtpServer = new Socket("mail.livedoor.cn", 25);
socketSmtpServer.setSoTimeout(500);
dos = new BufferedWriter(new OutputStreamWriter(socketSmtpServer.getOutputStream()));
dis = new BufferedReader(new InputStreamReader (socketSmtpServer.getInputStream()));
try{
dis.readLine();
dis.readLine();
}catch(Exception dx){}
dos.write("HELO "+user+"/r/n");dos.flush();
System.out.println("R_HELO:"+dis.readLine());
// auth login
dos.write("AUTH LOGIN/r/n");dos.flush();
System.out.println( new String(new BASE64Decoder().decodeBuffer(dis.readLine())));
String e_user=new BASE64Encoder().encode(user.getBytes());
dos.write(new String(e_user)+"/r/n");dos.flush();
System.out.println("R_USER:"+ new String(new BASE64Decoder().decodeBuffer(dis.readLine())));
String e_password=new BASE64Encoder().encode(pass.getBytes());
dos.write(new String(e_password)+"/r/n");dos.flush();
System.out.println("R_PASS:"+ dis.readLine());
dos.write("MAIL FROM:"+user+"@livedoor.cn/r/n");dos.flush();
System.out.println("R_MAIL FROM:"+dis.readLine());
dos.write("RCPT TO:huangcm@livedoor.cn/r/n");dos.flush();
System.out.println("RCPT TO:"+dis.readLine());
dos.write("DATA/r/n");dos.flush();
System.out.println("R_DATA:"+dis.readLine());
dos.write("To: myself/r/n");
dos.write("From: AutoDailyReport/r/n");
dos.write("Subject: "+subject+"/r/n");
dos.write("/r/n"+content+"/r/n");
dos.write("./r/n");
dos.flush();
System.out.println("R.:"+dis.readLine());
dos.write("QUIT/r/n");dos.flush();
System.out.println("R_QUIT:"+dis.readLine());
}catch(Exception dx){
dx.printStackTrace();
}
}
public static void main(String args[]) throws Exception{
if(args.length!=7){
System.out.println("java ADR jh_name jh_pass project_id mem_id rumor mail_name mail_pass");
return;
}
String name=args[0];
String pass=args[1];
String pid =args[2];
String mid =args[3];
String rumor=args[4];
String m_user=args[5];
String m_pass=args[6];
try{
String cookie=ADR.loginJh(name,pass);
ADR.writeDailyReport(cookie,pid,mid,rumor);
sendMail(m_user,m_pass,"AutoDailyReport OK","Submit Daily Report OK.");
}catch(Exception dx){
dx.printStackTrace();
sendMail(m_user,m_pass,"AutoDailyReport Error",dx.getMessage());
}
}
}
//---------------------------------------------------//
Add in Linux crontab (shell script)
#/bin/bsh
LOG_FILE=/opt/AutoDailyReport/haha.log
COMMAND='/usr/java/jdk1.5.0_04/bin/java -cp /opt/AutoDailyReport com.livedoor.xxx.ADR jh_name jh_pass nn nnn coding mail_name mail_pass'
echo `date`>>$LOG_FILE
echo `${COMMAND}`>>$LOG_FILE
echo '-------------------------------------------'>>$LOG_FILE
//------------------------------------------------------//
Windows .bat 批处理
@echo off
rem ***windows bat***
set cp="D:/AutoDailyReport"
set log="%cp%/haha.log"
set jp="d:/java/jdk1.5.0_04/bin/java"
set rcmd="com.livedoor.xxx.ADR"
set parm1="huangchengming"
set parm2="skywest"
set parm3="80"
set parm4="430"
set parm5="coding"
set parm6="huangcm"
set parm7="skywest"
date /t >> %log%
%jp% -cp %cp% %rcmd% %parm1% %parm2% %parm3% %parm4% %parm5% %parm6% %parm7% >> %log%
echo "====================================================================" >> %log%
Auto submit Daily Report
最新推荐文章于 2026-06-12 19:05:20 发布
本文介绍了一个自动化日报提交系统,该系统能够自动登录特定平台并提交工作报告,同时具备发送邮件通知的功能。系统通过Java实现,包括了登录验证、报告提交及邮件发送等模块。

481

被折叠的 条评论
为什么被折叠?



