[转载]网络协议模拟之QQ微博分享接口应用 – 凌晨的搜索者 – 博客园.
QQ微博在营销领域越来越受青睐了,这里面集成了很多非常有用的接口,像是邮件分享、空间分享、QQ分享、微信分享等。这相对于传统的直接模拟协议,登录 邮箱等方式进行邮件发送甚至更有效。所有这些都没什么技术难度,所以实现起来是很简单的。如果在开发过程中遇到了些困难的话,可能是多线程的把握吧!
在这样一些营销类项目之中,绝大多数都设计了多账号切换操作,这使得整个架构控制起来异常繁琐。对于多线程功底稍差的人来说,加上UI设计的搭配,简直就 是地狱般的折磨。项目实战开发最需要的就是经验的积累,平时练习的时候就得多为下一次开发做技术上的准备,否则一旦开始就会显得很吃力耗时。
上图只是我一个项目里的一张截图,我们要说的功能大致就是上面图中所表现出来的。但是这里,只做一个功能实现描述,不作项目完整实现。
步骤:
1.基础功能的类准备
1.处理xml的xmlHelper,2.处理Http模拟的HttpHelper 3.处理QQ登录验证密码MD5加密的QQMd5 4.其他一些Util功能实现类
所有这些类我会稍后放在文章附件里。
2.创建Account用户资料类[登录]
下面的这个类我只是给各位一个例子,可以展开看一下,但是还是要自己依据自己情况具体分析。
<span class = "typ" >View</span><span class = "pln" > </span><span class = "typ" >Code</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > class </span><span class = "pln" > </span><span class = "typ" >Account</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "com" >#region 属性</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 帐号登录的顺序号码</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > int </span><span class = "pln" > ID </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// QQ帐号</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Uin</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >List</span><span class = "str" >< string ></span><span class = "pln" > </span><span class = "typ" >Froms</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Mail</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 昵称</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Nick</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 我的首页</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >MyPage</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// QQ未加密的密码</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Password</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// QQ加密密码</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > P </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// QQ微博的Cookie容器</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >CookieContainer</span><span class = "pln" > </span><span class = "typ" >WeiboCookieContainer</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// QQ微博的Cookie字符</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >WeiboCookieString</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// QQ微博对应的Sid</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Sid</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 目前帐号的状态</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >Status</span><span class = "pln" > </span><span class = "typ" >CurrentStatus</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 帐号类型</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >AccountStyle</span><span class = "pln" > </span><span class = "typ" >AccountStyle</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 是否需要验证码</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > bool </span><span class = "pln" > </span><span class = "typ" >NeedVerify</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 验证码图片</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >Image</span><span class = "pln" > </span><span class = "typ" >VerifyImage</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 验证码字符串</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >VerifyCode</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" >#endregion</span><span class = "pln" > </span><span class = "com" >#region 构造函数</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >Account</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >Init</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >Account</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pln" > uin</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > password</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Uin</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > uin</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Password</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > password</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >Init</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" >#endregion</span><span class = "pln" > </span><span class = "com" >#region 私有函数</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > void </span><span class = "pln" > </span><span class = "typ" >Init</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >CookieContainer</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >CurrentStatus</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Status</span><span class = "pun" >.</span><span class = "typ" >Unlogin</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >AccountStyle</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >AccountStyle</span><span class = "pun" >.</span><span class = "typ" >Unknow</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" >#endregion</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span> |
上面的那些都不是关键,我们要做的第一步还是完成“判断验证码>输入验证码(如果有的话)>登录”,除了要我完成Http模拟请求之外还要从返回的结果中提取有用的信息。
<span class = "com" >#region 登录过程</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 判断登录微博是否需要验证码</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "com" > /// <returns></returns></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > bool </span><span class = "pln" > </span><span class = "typ" >CheckVerify_Weibo</span><span class = "pun" >(</span><span class = "kwd" > ref </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > vctype</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >,</span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "http://check.ptlogin2.qq.com/check?uin={0}@qq.com&appid=46000101&ptlang=2052&r={1}" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Uin</span><span class = "pun" >,</span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Random</span><span class = "pun" >().</span><span class = "typ" >NextDouble</span><span class = "pun" >());</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >IsNullOrEmpty</span><span class = "pun" >(</span><span class = "pln" >html</span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > false </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > pattern </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >@</span><span class = "str" > "ptui_checkVC\('(?'need'[^']*)','(?'vctype'[^']*)','[^']*'\);" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > need </span><span class = "pun" >=</span><span class = "pln" > html</span><span class = "pun" >.</span><span class = "typ" >Match</span><span class = "pun" >(</span><span class = "pln" >pattern</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "need" </span><span class = "pun" >);</span><span class = "pln" > vctype </span><span class = "pun" >=</span><span class = "pln" > html</span><span class = "pun" >.</span><span class = "typ" >Match</span><span class = "pun" >(</span><span class = "pln" >pattern</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "vctype" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >need </span><span class = "pun" >==</span><span class = "pln" > </span><span class = "str" > "1" </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >CurrentStatus</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Status</span><span class = "pun" >.</span><span class = "typ" >NeedVerify</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >VerifyImage</span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >GetImage</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > true </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > else </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >CurrentStatus</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Status</span><span class = "pun" >.</span><span class = "typ" >Unlogin</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >VerifyCode</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > vctype</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > false </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 获取显示验证码</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "com" > /// <returns></returns></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >Image</span><span class = "pln" > </span><span class = "typ" >GetImage</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "http://captcha.qq.com/getimage?aid=46000101&r=0.38706237439032276&uin={0}@qq.com" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Uin</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >Stream</span><span class = "pln" > stream </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetStream</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >Image</span><span class = "pln" > image </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Image</span><span class = "pun" >.</span><span class = "typ" >FromStream</span><span class = "pun" >(</span><span class = "pln" >stream</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > image</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" > /// <summary></span><span class="pln"> </span><span class = "com" > /// 登录</span><span class="pln"> </span><span class = "com" > /// </summary></span><span class="pln"> </span><span class = "com" > /// <returns></returns></span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Login</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > uin</span><span class = "pun" >,</span><span class = "pln" >password</span><span class = "pun" >,</span><span class = "pln" >verifyCode</span><span class = "pun" >;</span><span class = "pln" > uin </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Uin</span><span class = "pun" >;</span><span class = "pln" > password </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Password</span><span class = "pun" >;</span><span class = "pln" > verifyCode </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >VerifyCode</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > html</span><span class = "pun" >=</span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >IsNullOrEmpty</span><span class = "pun" >(</span><span class = "pln" >uin</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >||</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >IsNullOrEmpty</span><span class = "pun" >(</span><span class = "pln" >password</span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > throw </span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Exception</span><span class = "pun" >(</span><span class = "str" > "没有添加帐号,或帐号的密码为空" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >IsNullOrEmpty</span><span class = "pun" >(</span><span class = "pln" >verifyCode</span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > throw </span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Exception</span><span class = "pun" >(</span><span class = "str" > "验证码为空,无法继续登录" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >P </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >QQMd5</span><span class = "pun" >.</span><span class = "typ" >Encrypt</span><span class = "pun" >(</span><span class = "pln" >uin</span><span class = "pun" >,</span><span class = "pln" >password</span><span class = "pun" >,</span><span class = "pln" >verifyCode</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "http://ptlogin2.qq.com/login?ptlang=2052&u={0}@qq.com&p={1}&verifycode={2}&low_login_enable=1&low_login_hour=720&css=http://imgcache.qq.com/ptcss/b4/wb/46000101/login1.css&aid=46000101&mibao_css=m_weibo&u1=http%3A%2F%2Ft.qq.com&ptredirect=1&h=1&from_ui=1&dumy=&fp=loginerroralert&action=7-9-1381063&g=1&t=1&dummy=" </span><span class = "pun" >,</span><span class = "pln" > uin</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >P</span><span class = "pun" >,</span><span class = "pln" > verifyCode</span><span class = "pun" >);</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >html</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "您输入的验证码不正确,请重新输入" </span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > throw </span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Exception</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "验证码输入不正确" </span><span class = "pun" >));</span><span class = "pln" > </span><span class = "kwd" > else </span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >html</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "您输入的帐号或密码不正确,请重新输入" </span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > throw </span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Exception</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "帐号或密码不正确" </span><span class = "pun" >));</span><span class = "pln" > </span><span class = "kwd" > else </span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >html</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "登录成功" </span><span class = "pun" >))</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "登录成功" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >CurrentStatus</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Status</span><span class = "pun" >.</span><span class = "typ" >Login</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span> |
由于本人不太喜欢用已经做好的轮子去用Json处理类(比如Newtonsoft.net),所以一般处理都是用的正则表达式,各位也可以自己用JsonObejct类去处理,不用跟我一样用正则这种笨方法。
3.获取必要信息[提取微博数据]
<span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >GetInfo</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "kwd" > string </span><span class = "pln" > html</span><span class = "pun" >=</span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > try </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://t.qq.com" </span><span class = "pun" >;</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > pattern </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >@</span><span class = "str" > "href=" "(?'mypage'[^" "]*)" "><u>首页" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > mypage </span><span class = "pun" >=</span><span class = "pln" > html</span><span class = "pun" >.</span><span class = "typ" >Match</span><span class = "pun" >(</span><span class = "pln" >pattern</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "mypage" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > mypage</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >IsNullOrEmpty</span><span class = "pun" >(</span><span class = "pln" >mypage</span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > throw </span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Exception</span><span class = "pun" >(</span><span class = "str" > "获取微博话题列表失败" </span><span class = "pun" >);</span><span class = "pln" > pattern </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >@</span><span class = "str" > "boss=" "btnWideSideMyNick" ">(?'nick'[^<]*)</a>" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > nick </span><span class = "pun" >=</span><span class = "pln" > html</span><span class = "pun" >.</span><span class = "typ" >Match</span><span class = "pun" >(</span><span class = "pln" >pattern</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "nick" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >html</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "立即开通" </span><span class = "pun" >))</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >CurrentStatus</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Status</span><span class = "pun" >.</span><span class = "typ" >NotRegist</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Nick</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > nick</span><span class = "pun" >;</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "成功获取微博话题列表" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > catch </span><span class = "pun" >(</span><span class = "typ" >Exception</span><span class = "pln" > e</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > e</span><span class = "pun" >.</span><span class = "typ" >Message</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >List</span><span class = "pun" ><</span><span class = "typ" >FriendInfo</span><span class = "pun" >></span><span class = "pln" > </span><span class = "typ" >GetQQFriendList</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > account </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > r </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "1351620387406" </span><span class = "pun" >;</span><span class = "pln" > account </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pun" >.</span><span class = "typ" >ToLower</span><span class = "pun" >().</span><span class = "typ" >Replace</span><span class = "pun" >(</span><span class = "str" > "http://t.qq.com/" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "http://api.t.qq.com/share/qqList.php?account={0}&r={1}&apiType=8&apiHost=http://api.t.qq.com&_r={1}" </span><span class = "pun" >,</span><span class = "pln" > account</span><span class = "pun" >,</span><span class = "pln" >r</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >ExtendHeadData</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "rf:{0}" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >ExtendHeadData</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >Regex</span><span class = "pln" > regex </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Regex</span><span class = "pun" >(@</span><span class = "str" > "(" "sortId" ":(?'sordId'[^" "]+),)*" "name" ":" "(?'name'[^" "]+)" ",(" "groupId" ":(?'groupId'[^,]+),)*(" "member" ":(?'member'\[[^\]]*\]))*" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >RegexOptions</span><span class = "pun" >.</span><span class = "typ" >IgnoreCase</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >MatchCollection</span><span class = "pln" > matches </span><span class = "pun" >=</span><span class = "pln" > regex</span><span class = "pun" >.</span><span class = "typ" >Matches</span><span class = "pun" >(</span><span class = "pln" >html</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >List</span><span class = "pun" ><</span><span class = "typ" >FriendInfo</span><span class = "pun" >></span><span class = "pln" > list </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >List</span><span class = "pun" ><</span><span class = "typ" >FriendInfo</span><span class = "pun" >>();</span><span class = "pln" > </span><span class = "kwd" > for </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > int </span><span class = "pln" > i </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "lit" >0</span><span class = "pun" >;</span><span class = "pln" > i </span><span class = "pun" ><</span><span class = "pln" > matches</span><span class = "pun" >.</span><span class = "typ" >Count</span><span class = "pun" >;</span><span class = "pln" > i</span><span class = "pun" >++)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > sortId </span><span class = "pun" >=</span><span class = "pln" > matches</span><span class = "pun" >[</span><span class = "pln" >i</span><span class = "pun" >].</span><span class = "typ" >Groups</span><span class = "pun" >[</span><span class = "str" > "sortId" </span><span class = "pun" >].</span><span class = "typ" >Value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > name </span><span class = "pun" >=</span><span class = "pln" > matches</span><span class = "pun" >[</span><span class = "pln" >i</span><span class = "pun" >].</span><span class = "typ" >Groups</span><span class = "pun" >[</span><span class = "str" > "name" </span><span class = "pun" >].</span><span class = "typ" >Value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > groupId </span><span class = "pun" >=</span><span class = "pln" > matches</span><span class = "pun" >[</span><span class = "pln" >i</span><span class = "pun" >].</span><span class = "typ" >Groups</span><span class = "pun" >[</span><span class = "str" > "groupId" </span><span class = "pun" >].</span><span class = "typ" >Value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > member </span><span class = "pun" >=</span><span class = "pln" > matches</span><span class = "pun" >[</span><span class = "pln" >i</span><span class = "pun" >].</span><span class = "typ" >Groups</span><span class = "pun" >[</span><span class = "str" > "member" </span><span class = "pun" >].</span><span class = "typ" >Value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >Regex</span><span class = "pln" > memberRegex </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Regex</span><span class = "pun" >(@</span><span class = "str" > "" "qq" ":" "(?'qq'[^" "]*)" "," "pic" ":null," "nick" ":" "(?'nick'[^" "]*)" "" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >RegexOptions</span><span class = "pun" >.</span><span class = "typ" >IgnoreCase</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >MatchCollection</span><span class = "pln" > memberMatches </span><span class = "pun" >=</span><span class = "pln" > memberRegex</span><span class = "pun" >.</span><span class = "typ" >Matches</span><span class = "pun" >(</span><span class = "pln" >member</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > for </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > int </span><span class = "pln" > j </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "lit" >0</span><span class = "pun" >;</span><span class = "pln" > j </span><span class = "pun" ><</span><span class = "pln" > memberMatches</span><span class = "pun" >.</span><span class = "typ" >Count</span><span class = "pun" >;</span><span class = "pln" > j</span><span class = "pun" >++)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > qq </span><span class = "pun" >=</span><span class = "pln" > memberMatches</span><span class = "pun" >[</span><span class = "pln" >j</span><span class = "pun" >].</span><span class = "typ" >Groups</span><span class = "pun" >[</span><span class = "str" > "qq" </span><span class = "pun" >].</span><span class = "typ" >Value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > nick </span><span class = "pun" >=</span><span class = "pln" > memberMatches</span><span class = "pun" >[</span><span class = "pln" >j</span><span class = "pun" >].</span><span class = "typ" >Groups</span><span class = "pun" >[</span><span class = "str" > "nick" </span><span class = "pun" >].</span><span class = "typ" >Value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >FriendInfo</span><span class = "pln" > friendInfo </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >FriendInfo</span><span class = "pun" >();</span><span class = "pln" > friendInfo</span><span class = "pun" >.</span><span class = "typ" >Uin</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > qq</span><span class = "pun" >;</span><span class = "pln" > friendInfo</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >WebQQ</span><span class = "pun" >.</span><span class = "typ" >Converter</span><span class = "pun" >.</span><span class = "typ" >Unicode_js_1</span><span class = "pun" >(</span><span class = "pln" >name</span><span class = "pun" >);</span><span class = "pln" > friendInfo</span><span class = "pun" >.</span><span class = "typ" >Nick</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >WebQQ</span><span class = "pun" >.</span><span class = "typ" >Converter</span><span class = "pun" >.</span><span class = "typ" >Unicode_js_1</span><span class = "pun" >(</span><span class = "pln" >nick</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >friendInfo</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >==</span><span class = "pln" > </span><span class = "str" > "最近联系人" </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "kwd" > continue </span><span class = "pun" >;</span><span class = "pln" > friendInfo</span><span class = "pun" >.</span><span class = "typ" >SortId</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > sortId</span><span class = "pun" >;</span><span class = "pln" > friendInfo</span><span class = "pun" >.</span><span class = "typ" >GroupId</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > groupId</span><span class = "pun" >;</span><span class = "pln" > friendInfo</span><span class = "pun" >.</span><span class = "pln" >QQ </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Uin</span><span class = "pun" >;</span><span class = "pln" > list</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" >friendInfo</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > list</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span> |
上面这一步不一定是必须的,但是没有这一步,我们后面所要实现的功能就会很困难。包括发送分享给QQ,这一步,因为要发送的QQ好友的号码不是真正的号码,而是一个系统随机生成的好友序列号的MD5加密字段。因此,我们也无法用于分享QQ给陌生人号码。
4.分享
<span class = "com" >#region 分享</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >MailShare</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pln" > shareId</span><span class = "pun" >,</span><span class = "kwd" > string </span><span class = "pln" > toList</span><span class = "pun" >,</span><span class = "kwd" > string </span><span class = "pln" > subject</span><span class = "pun" >,</span><span class = "kwd" > string </span><span class = "pln" > reason</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url</span><span class = "pun" >,</span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/mail/mailShare.php" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >ExtendHeadData</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "rf:{0}" </span><span class = "pun" >,</span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/proxy.html" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > mail </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >Mail</span><span class = "pun" >));</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > maillist </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "pln" >toList</span><span class = "pun" >));</span><span class = "pln" > subject </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "pln" >subject</span><span class = "pun" >));</span><span class = "pln" > reason </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "pln" >reason</span><span class = "pun" >));</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > postString </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "mailAddr={0}&mlist={1}&subject={2}&body={3}&reason={4}&apiType=8&apiHost=http://api.t.qq.com" </span><span class = "pun" >,</span><span class = "pln" > mail</span><span class = "pun" >,</span><span class = "pln" >toList</span><span class = "pun" >,</span><span class = "pln" >subject</span><span class = "pun" >,</span><span class = "pln" >shareId</span><span class = "pun" >,</span><span class = "pln" >reason</span><span class = "pun" >);</span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > postString</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >ShareQZone</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pln" > shareId</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > reason</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/share/shareQzone.php" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >ExtendHeadData</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "rf:{0}" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/proxy.html" </span><span class = "pun" >;</span><span class = "pln" > reason </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "pln" >reason</span><span class = "pun" >));</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > postString </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "id={0}&reason={1}&apiType=8&apiHost=http://api.t.qq.com" </span><span class = "pun" >,</span><span class = "pln" >shareId</span><span class = "pun" >,</span><span class = "pln" >reason</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > postString</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >ShareMsg</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pln" > shareId</span><span class = "pun" >,</span><span class = "kwd" > string </span><span class = "pln" > uins</span><span class = "pun" >,</span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "kwd" > group </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/share/shareMsg.php" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > postString </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "id={0}&uins={1}&group={2}&apiType=8&apiHost=http://api.t.qq.com" </span><span class = "pun" >,</span><span class = "pln" > shareId</span><span class = "pun" >,</span><span class = "pln" >uins</span><span class = "pun" >,</span><span class = "kwd" > group </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >ExtendHeadData</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "rf:{0}" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >MyPage</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/proxy.html" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" > postString</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >Referer</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Pm_Mgr</span><span class = "pun" >(</span><span class = "kwd" > string </span><span class = "pln" > content</span><span class = "pun" >,</span><span class = "kwd" > string </span><span class = "pln" > target</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > url </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "http://api.t.qq.com/inbox/pm_mgr.php" </span><span class = "pun" >;</span><span class = "pln" > content </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "pln" >content</span><span class = "pun" >));</span><span class = "pln" > target </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpUtility</span><span class = "pun" >.</span><span class = "typ" >UrlEncode</span><span class = "pun" >(</span><span class = "typ" >Encoding</span><span class = "pun" >.</span><span class = "pln" >UTF8</span><span class = "pun" >.</span><span class = "typ" >GetBytes</span><span class = "pun" >(</span><span class = "pln" >target</span><span class = "pun" >));</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > postString </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >Format</span><span class = "pun" >(</span><span class = "str" > "source=&ptid=&roomid=&content={0}&fid=&arturl=&murl=&target={1}&func=send&ef=js&pmlang=zh_CN&apiType=8&apiHost=http://api.t.qq.com" </span><span class = "pun" >,</span><span class = "pln" > content</span><span class = "pun" >,</span><span class = "pln" >target</span><span class = "pun" >);</span><span class = "com" > //wuwenjun20102008,niefeng101</span><span class="pln"> </span><span class = "kwd" > string </span><span class = "pln" > html </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HttpHelper</span><span class = "pun" >.</span><span class = "typ" >GetHtml</span><span class = "pun" >(</span><span class = "pln" >url</span><span class = "pun" >,</span><span class = "pln" >postString</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >WeiboCookieContainer</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > html</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "com" >#endregion</span> |
当然,给大家分享上面的分析结果不是让大家去干一些让人讨厌的事(大家都懂的),仅仅是为那些爱好Http协议模拟的提供参考的方便。如果有和我一样对这方面有共同爱好,请继续关注本人的博客
教程每天都更新,欢迎继续关注!
本文属于原创文章,转载请保持http://www.cnblogs.com/uu102的链接 如果违法上述规定,本人将保留追究转载者的权利.谢谢合作