转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> C语言系列 >> 正文
C#自动投票器的原理及设计思路         ★★★

C#自动投票器的原理及设计思路

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1098 更新时间:2012/1/7 16:47:07

网络投票和平时浏览网页、登陆邮箱一样,都是客户端和网站服务器之间的通讯过程。客户端发出信息请求,服务器端收到信息后根据后台程序作出相应的反馈,客户端收到反馈信息后再显示出来。
    手工投票时,客户端电脑打开IE,点击投票按钮,IE就会发送一定的信息到服务器,服务器收到信息后进行处理,再将结果反馈回客户端的IE,用户就会在IE中看到投票是否成功的信息。
    自动投票器的原理就是循环模拟手动投票的过程,大致分为以下几个步骤:
    1、打开IE手动投票,使用专门工具获取投票时IE往服务器提交的信息。
    2、分析信息得到提交的网址、提交的数据等。
    3、编程模拟手动投票往服务器发送投票信息,循环发送信息就可以达到快速投票。
    获取信息和分析信息在Outdovote通用网络自动投票器的说明文件里有,这里就不再说了,下面讲讲Microsoft Visual Studio 2005 C#如何编程模拟手工投票发送信息。
假如投票时获取的数据如下:
POST /generalvote/webvote/savevote.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://www.mintao.net/generalvote/webvote/vote.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Proxy-Connection: Keep-Alive
Content-Length: 42
Host: www.mintao.net
Pragma: no-cache
Cookie: ASPSESSI; ASPSESSI; ASPSESSI
citygroup=%C7%E0%B5%BA&submit=%CC%E1%BD%BB
那么如何用编程来发送这样的数据呢,C#有个WebClient类,这个类非常好用,我们就用它来实现发送投票信息。
WebClient类可以自定义HTTP Headers属性(设置HTTP头信息),使用UploadData函数就可以POST数据到服务器,关于WebClient类的更多信息,请参考MSDN。
C#代码如下:
WebClient myWebClient = new WebClient();//申明并创建WebClient实例myWebClient
byte[] byteArray;//申明存储提交数据的变量
byte[] responseArray;//申明存储接收数据的变量

//设置HTTP头信息,并非所以的信息都需要设置,以下这些信息足够了
myWebClient.Headers.Add("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
myWebClient.Headers.Add("Referer", "http://www.mintao.net/generalvote/webvote/vote.asp");
myWebClient.Headers.Add("Accept-Language", "zh-cn");
myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
myWebClient.Headers.Add("Accept-Encoding", "gzip, deflate");

byteArray = Encoding.Default.GetBytes(voteDATA);//将提交的数据转化为byte数组

try
{
    responseArray = myWebClient.UploadData("http://www.mintao.net/generalvote/webvote/savevote.asp", "POST", byteArray);//提交投票信息,并获取返回的数据
}
catch (Exception exPOST)
{
    errorMessage = "\nPOST方式投票时出现错误,错误信息为:" + exPOST.Message;
    myWebClient.Dispose();//释放myWebClient所占用的资源
    return false;//提示错误信息并返回。
}
myWebClient.Dispose();//释放myWebClient所占用的资源
outputMessage = "\n接收的正文信息:\n";
outputMessage = outputMessage + Encoding.Default.GetString(responseArray);
return true;
将以上代码封装在一个函数中,然后做个循环就可以实现连续投票了。


[C语言系列]C# 过滤html,js,css代码 正则表达式  [C语言系列]C# DataGridView显示行号的两种方法
[C语言系列]C# WinForm 中Label自动换行 解决方法  [C语言系列]C# 线程调用主线程中的控件
[电脑应用]c# winform 打包部署 自定义界面 或设置开机启动  [C语言系列]C# 和 Linux 时间戳转换
[C语言系列]C#实现 WebBrowser中新窗口打开链接用默认或者指定…  [C语言系列]C#全角和半角转换
[C语言系列]c#WebBrowser查找并选择文本  [C语言系列]C#中实现WebBrowser控件的HTML源代码读写
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台