很幸运的是,在这次开发“CSDN助手”的时候,CSDN已经发布了帐户登录的Web Service,并且提供了演示代码。需要的请点击http://passport.csdn.net/demo/CSDNLoginDemo.rar。要是没有这个登录Web Service,我们实现登录的方法就很可能是非常繁琐的。如先下载登录页面,然后输入用户名、密码、验证码,模拟提交页面,再分析响应的页面中的字符串特征,判断是否登录成功,如果不成功,原因何在。而使用Web Service,我们需要做的仅仅是调用函数,通过返回值就可以知道登录的状态了。
在.net中,通过引用web,可以快速的封装一个客户端类,调用Web Service是很简单的。但在VC++中,就没有这么便利的封装手段了。微软针对Web Service的应用,发布了一个工具叫“Microsoft SOAP Toolkit 3.0”。通过它提供的COM组件,我们也可以方便的调用Web Service。但查看“Microsoft SOAP Toolkit 3.0”发行包的说明之后,我还是决定自制一个简易的Web Service调用组件。
一、为什么不使用“Microsoft SOAP Toolkit 3.0”发行包
该发行包要求的先决条件太多,对于“CSDN助手”而言,生成的安装包也过于庞大。
- 此发行包共包含三个合并包:Soap3_core.msm、Isapi3_files.msm、Winhttp.msm
对于所有的安装模式,Soap3_core.msm和winhttp.msm都是必须的。而这两个包加起来有1.4M。 - 该工具必须首先安装MSXML4 SP1。
- 欲使用此发行包,必使用最新版本的Microsoft Windows® Installer,而这又不是每台机器上都有的。