首页 新闻 赞助 找找看

每天来打卡 好烦啊 我是程序员,想写一个计划任务自动打卡,求指点

0
悬赏园豆:100 [已关闭问题] 关闭于 2012-10-08 10:30

总是迟到有点烦  还会被说

 

怎么说楼主也是一个.net 软件工作者

 

想写一个自动打卡的  占时没有啥思路   因为我们的OA  是POST 提交 想问问大神么 这个应该怎么实现  

 

PS   告诉我思路就可以了 谢谢~~~~

问题补充:
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.Net;
 5 using System.IO;
 6 using System.Threading;
 7 
 8 
 9 namespace Omd
10 {
11     public static class Attendendance
12     {
13         public static int CheckIn(UserInfo info)
14         {
15             Stream outstream = null;
16             Stream instream = null;
17             StreamReader sr = null;
18             HttpWebResponse response = null;
19             HttpWebRequest request = null;
20             string content = null;
21             Encoding encoding = Encoding.UTF8;
22             byte[] data = encoding.GetBytes(info.PostInfo);
23             try
24             {
25                 // 设置参数
26                 request = (HttpWebRequest)WebRequest.Create(info.Oaip);
27                 CookieContainer cookieContainer = new CookieContainer();
28                 request.CookieContainer = cookieContainer;
29                 request.AllowAutoRedirect = true;
30                 request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2";
31                 request.Method = "POST";
32                 request.ContentType = "text/plain; charset=UTF-8";
33                 request.ContentLength = data.Length;
34 
35                 outstream = request.GetRequestStream();
36                 outstream.Write(data, 0, data.Length);
37                 outstream.Close();
38 
39                 //发送请求并获取相应回应数据
40                 response = (HttpWebResponse)request.GetResponse();
41 
42                 //直到request.GetResponse()程序才开始向目标网页发送Post请求
43                 instream = response.GetResponseStream();
44                 sr = new StreamReader(instream, encoding);
45 
46                 //返回结果网页
47                 content = sr.ReadToEnd();
48                 if (content.Length > 0)
49                 {
50                     return 1;
51                 }
52                 else { return 0; }
53             }
54             catch { return 0; }
55         }
56         public static string GetViewState(UserInfo info)
57         {
58             string URI = info.Oaip;
59             HttpWebRequest request = WebRequest.Create(URI) as HttpWebRequest;
60             request.Method = "POST";
61             request.KeepAlive = false;
62 
63             //// 接收返回的页面
64             HttpWebResponse response = request.GetResponse() as HttpWebResponse;
65             System.IO.Stream responseStream = response.GetResponseStream();
66             System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
67             string srcString = reader.ReadToEnd();
68 
69             //// 获取页面的 VeiwState                
70             string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
71             int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
72             int j = srcString.IndexOf("\"", i);
73             string viewState = srcString.Substring(i, j - i);
74 
75             //// 获取页面的 EventValidation                
76             string eventValidationFlag = "id=\"__EVENTVALIDATION\" value=\"";
77             i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
78             j = srcString.IndexOf("\"", i);
79             string eventValidation = srcString.Substring(i, j - i);
80 
81             // 将文本转换成 URL 编码字符串
82             viewState = System.Uri.EscapeDataString(viewState);
83             eventValidation = System.Uri.EscapeDataString(eventValidation);
84             string btn = System.Uri.EscapeDataString("下班签到");
85             string formatString =
86                      "ctl00$ContentPlaceHolder1$ASPxRoundPanel1$SubC2={0}&__VIEWSTATE={1}&__EVENTVALIDATION={2}";
87             string postString =
88                      string.Format(formatString, btn, viewState, eventValidation);
89 
90             // 返回提交的字符串
91             return postString;
92          
93 
94         }
95     }
96 }
skin33的主页 skin33 | 初学一级 | 园豆:110
提问于:2012-09-28 11:03
< >
分享
所有回答(12)
0

写个 form 提交,

 

具体提交地址,提交参数,研究研究!

 

祝你好运,小心被发现了 ....

张坤 | 园豆:1865 (小虾三级) | 2012-09-28 11:06

我到也是想,目前研究中

支持(0) 反对(0) skin33 | 园豆:110 (初学一级) | 2012-09-28 11:18
0

我这个是php实现post,你可以参考下,嘿嘿~~ PHP POST数据至远程服务器获取信息

Zjmainstay | 园豆:355 (菜鸟二级) | 2012-09-28 11:25
0

如果OA是外网可以访问的话,你可以在快要迟到时用手机登录OA打卡。

要是觉得有必要做成自动的话,可以用HttpWebRequest将打卡的Form数据Post提交给OA。

I,Robot | 园豆:9783 (大侠五级) | 2012-09-28 12:28

滴个是局域网的  所以说不能用手机

支持(0) 反对(0) skin33 | 园豆:110 (初学一级) | 2012-09-28 16:37
0

打卡时间记得搞个随机数,不然一查数据库就暴露了。

便当之神 | 园豆:268 (菜鸟二级) | 2012-09-28 13:18
0

最笨蛋的方法,就是写个web的ui测试,就是这个测试程序会打开一游览器(指定的地址),然后输入参数,然后提交,ok了

前提是你那个电脑,过了一夜,没有待机啊

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-28 13:55
0

最好写个手机应用程序。会更好

以人会友 | 园豆:8 (初学一级) | 2012-09-28 15:52

难不成你在家里还想打卡吗。。

支持(0) 反对(0) 以便以谢 | 园豆:119 (初学一级) | 2012-09-28 16:30

@宇称不守恒: 送你两个字:灵活

支持(0) 反对(0) 以人会友 | 园豆:8 (初学一级) | 2012-09-28 16:35

滴个是局域网的  所以说不能用手机

支持(0) 反对(0) skin33 | 园豆:110 (初学一级) | 2012-09-28 16:38
0

写个 form 提交,

jason2013 | 园豆:1998 (小虾三级) | 2012-09-28 17:00

我写好了 可是不成功啊  为什么了!!!!!!!!

支持(0) 反对(0) skin33 | 园豆:110 (初学一级) | 2012-09-28 17:00
0

每天不关机吗,还是说你要放在服务器上

Virus-BeautyCode | 园豆:1619 (小虾三级) | 2012-09-28 17:33
0

还不如跟老板说 把打卡撤掉

Y2zz | 园豆:393 (菜鸟二级) | 2012-09-29 23:11
0

这个太简单了。。。。

水墨.MR.H | 园豆:280 (菜鸟二级) | 2012-10-05 14:40
0

搞清楚 from 提交的字段  然后自己写一个类似的页面  使用时间函数   到某一个时间点自动提交一次    建议你放在服务器上

落幕残情 | 园豆:34 (初学一级) | 2012-10-05 22:21
0

简单得不能再简单了,最好写个手机程序,设置一个定时打卡功能。

KindFace | 园豆:202 (菜鸟二级) | 2012-10-08 10:26

局域网!!

支持(0) 反对(0) skin33 | 园豆:110 (初学一级) | 2012-10-08 10:29

@林宇: 你开始又没说是局域网,如果局域网,那就更简单了。你写个WinForm,内设一个webbrowser控件,其URL初始为你打卡的url路径,并且把你的卡号作为参数传递过去,就妥了,设置这个WinForm程序开机自动启动,你再把计算机弄成每天自动开机。你别告诉我你不会想办法设置自动开机。如果你办不到,建议你还是回老家放牛去。

支持(0) 反对(0) KindFace | 园豆:202 (菜鸟二级) | 2012-10-09 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册