然后就是发布的代码

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

下一篇:博客小工具3

昨天发了一个博客转发小工具有朋友说“能一键转发到各主流媒体站上就更好了”。一开始我以为会能难,需要登录啊还有cookie的管理啊模拟post请求啊,乱七八糟一大堆。心想算啦,太累人,还不一定搞得定。后来心里总想着有没有什么简单的办法,就在网上查资料。最后皇天不负有心人让我找到了HttpClient。

ok,接着昨天的来。昨天的只能获取别人文章的内容复制到粘贴板。今天让它能一键发布。

首先需要解决的问题就是登录问题,不然可能是不能发布的。

登录博客园的代码1///<summary>2///登录博客园3///</summary>4///<param name="username"></param>5///<param name="passWord"></param>6///<returns></returns>7publicboolLoginCnblogs(stringusername ="",stringpassword ="")8{9httpClient =newHttpClient();10httpClient.MaxResponseContentBufferSize =256000;11httpClient.DefaultRequestHeaders.Add("user-agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/36.0.1985.143 Safari/537.36");12String url ="http://passport.cnblogs.com/login.aspx";13HttPResponseMessage response = httpClient.GetAsync(newUri(url)).Result;14String result =response.Content.ReadAsStringAsync().Result;1516String __EVENTVALIDATION =newRegex("id=\"__EVENTVALIDATION\" value=\"(.*?)\"").Match(result).Groups[1].Value;17String __VIEWSTATE =newRegex("id=\"__VIEWSTATE\" value=\"(.*?)\"").Match(result).Groups[1].Value;18String LBD_VCID_c_login_logincaptcha =newRegex("id=\"LBD_VCID_c_login_logincaptcha\" value=\"(.*?)\"").Match(result).Groups[1].Value;1920//开始登录21url ="http://passport.cnblogs.com/login.aspx";22List<KeyValuePair<String, String>> paramList =newList<KeyValuePair<String, String>>();23paramList.Add(newKeyValuePair<string,string>("__EVENTTARGET",""));24paramList.Add(newKeyValuePair<string,string>("__EVENTARGUMENT",""));25paramList.Add(newKeyValuePair<string,string>("__VIEWSTATE", __VIEWSTATE));26paramList.Add(newKeyValuePair<string,string>("__VIEWSTATEGENERATOR","C2EE9ABB"));27paramList.Add(newKeyValuePair<string,string>("__EVENTVALIDATION", __EVENTVALIDATION));28paramList.Add(newKeyValuePair<string,string>("tbUserName", username));29paramList.Add(newKeyValuePair<string,string>("tbPassword", password));30paramList.Add(newKeyValuePair<string,string>("LBD_VCID_c_login_logincaptcha", LBD_VCID_c_login_logincaptcha));31paramList.Add(newKeyValuePair<string,string>("LBD_BackWorkaround_c_login_logincaptcha","1"));32//paramList.Add(new KeyValuePair<string, string>("CaptchaCodeTextBox", imgCode));33paramList.Add(newKeyValuePair<string,string>("btnLogin","登 录"));34paramList.Add(newKeyValuePair<string,string>("txtReturnUrl","http://home.cnblogs.com/"));35response = httpClient.PostAsync(newUri(url),newFormUrlEncodedContent(paramList)).Result;36result =response.Content.ReadAsStringAsync().Result;3738if(result.Contains("用户登录"))39returnfalse;40elseif(result.Contains("返回博客园首页"))41returntrue;42else43returnfalse;44}

然后就是发布的代码1///<summary>2///发布转发文章3///</summary>4///<returns></returns>5publicboolRelease(stringtitle ="",stringcontent ="")6{7List<KeyValuePair<String, String>> paramList =newList<KeyValuePair<String, String>>();8paramList.Add(newKeyValuePair<string,string>("__VIEWSTATE",@""));9paramList.Add(newKeyValuePair<string,string>("__VIEWSTATEGENERATOR","FE27D343"));10paramList.Add(newKeyValuePair<string,string>("Editor$Edit$txbTitle", title));11paramList.Add(newKeyValuePair<string,string>("Editor$Edit$EditorBody", content));12paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$ckbPublished","on"));13paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$chkDisplayHomePage","on"));14paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$chkComments","on"));15paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$chkMainSyndication","on"));16paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$txbEntryName",""));17paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$txbExcerpt",""));18paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$txbTag",""));19paramList.Add(newKeyValuePair<string,string>("Editor$Edit$Advanced$tbEnryPassword",""));20paramList.Add(newKeyValuePair<string,string>("Editor$Edit$lkbPost","发布"));2122HttpResponseMessage response = httpClient.PostAsync(newUri("http://i.cnblogs.com/EditPosts.aspx?opt=1"),newFormUrlEncodedContent(paramList)).Result;23String result =response.Content.ReadAsStringAsync().Result;24if(result.Contains("发布成功"))25returntrue;26else27returnfalse;2829}

关键代码就只有这么几句,没什么好讲的。我也不知其所以然。

不说了 上效果图。

转发成功。

说明: 因为我登录博客园没有要输入验证码的情况,所以我就没有做验证码的处理了。大家的应该也不用输验证码吧。

还有就是没有做其他主流博客直接的相互转发,只有博客园内的转发。同学们有兴趣可以在次基础上做修改,欢迎改得“面目全非”。

环境: vs2013 .net4.5

功能: 支持博客园一键转发,密码保存。下次就可以不用输入密码了。但是没有做加密措施。同学们可以自己接着折腾。

好了~最后发源码了。如果能感兴趣,拿起您的小手点个赞。如果您要反对 求您给你理由。

程序下载 源码下载

下一篇:博客小工具3

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航