以前在做中国知网的模拟登录检索的小系统,但是由于本人的技术不过关,中途夭折了。不过在这个过程中还是有很多的收获,这个cnblogs文章发布就是在那个基础上做起来的。
我把这里的主要代码贴出来大家看看:
这是登录窗口中的代码部分:
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 string postData =string.Format( "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=/wEPDwULLTE1MzYzODg2NzZkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtjaGtSZW1lbWJlcm1QYDyKKI9af4b67Mzq2xFaL9Bt&__EVENTVALIDATION=/wEWBQLWwpqPDQLyj/OQAgK3jsrkBALR55GJDgKC3IeGDE1m7t2mGlasoP1Hd9hLaFoI2G05&tbUserName={0}&tbPassword={1}&btnLogin=登 录&txtReturnUrl=http://home.cnblogs.com/",txtName.Text.Trim(),txtPwd.Text.Trim());
2 //这是cnblogs提交时的一些参数
3 ASCIIEncoding encoding = new ASCIIEncoding();
4 byte[] data = encoding.GetBytes(postData);
5 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://passport.cnblogs.com/login.aspx");
6 request.Method = "Post";
7 request.ContentType = "application/x-www-form-urlencoded";
8 request.ContentLength = data.Length;
9 request.KeepAlive = true;
10 request.CookieContainer = container; //返回的cookie会附加在这个容器里面
11 //发送数据
12
13 Stream newStream = request.GetRequestStream();
14 newStream.Write(data, 0, data.Length);
15
16
17 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
18 newStream = response.GetResponseStream();
19 StreamReader reader = new StreamReader(newStream, Encoding.UTF8);
20 string text = reader.ReadToEnd();
21 reader.Close();
22 newStream.Close();
窗体效果:
这是主窗体代码部分:
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 string postData = string.Format("__EVENTTARGET=Editor$Edit$lkbPost&__EVENTARGUMENT=&__VIEWSTATE=&Editor$Edit$txbTitle={0}&Editor$Edit$EditorBody={1}&Editor$Edit$APOptions$APSiteHome$chkDisplayHomePage=on&Editor$Edit$Advanced$ckbPublished=on&Editor$Edit$Advanced$chkComments=on&Editor$Edit$Advanced$chkMainSyndication=on&Editor$Edit$Advanced$txbEntryName=&Editor$Edit$Advanced$txbExcerpt=&Editor$Edit$Advanced$txbTag=&Editor$Edit$Advanced$tbEnryPassword=",txtTitle.Text,rtxtContent.Text);//提交数据的一些参数
2 string Url = @"http://www.cnblogs.com/envenler/admin/EditPosts.aspx?opt=1";//要提交到的网址
3 ASCIIEncoding encoding=new ASCIIEncoding ();
4 byte[] byt = encoding.GetBytes(postData);
5 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
6 request.Method = "Post";
7 request.ContentType = "application/x-www-form-urlencoded";
8 request.ContentLength = byt.Length;
9 request.KeepAlive = true;
10 request.CookieContainer = Ccontainter; //返回的cookie会附加在这个容器里面
11 //发送数据
12
13 Stream newStream = request.GetRequestStream();
14 newStream.Write(byt, 0, byt.Length);
15 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
16 newStream = response.GetResponseStream();
17 StreamReader reader = new StreamReader(newStream, Encoding.UTF8);
18 string text = reader.ReadToEnd();
19 reader.Close();
20 newStream.Close();
窗体效果:
最后附上这个全部源码:http://files.cnblogs.com/envenler/cnblogsLogin.rar (这个好像有点问题,如需下载请复制链接到浏览器打开。)