初始接触 XML及SOAP第一天,摸不着头绪,看了很多文章,总结一下几点心得,附一个小例子使用VC++控制台程序获取UTC服务器时间。
看到的资料VC++都是使用soap toolkit来使用SOAP,soap toolkit目前看最高版本应该是3.0,但是微软已经不再对soap toolkit提供技术支持及更新,在微软官网没找到3.0的下载,目前微软官方能z找到的下载的版本为2.0:http://download.microsoft.com/download/xml/soap/2.0/w98nt42kme/EN-US/SoapToolkit20.exe
如果使用3.0,只能从第三方网站下载。安装soap toolkit很简单,但是要记住安装路径,以便在程序中引用。国人的文章多是翻译一篇SOAP Client Using Visual C++,文章大多雷同,但是由于该文章中的测试实现功能为返回雅虎用户的在线信息(The service indicates Yahoo Messenger’s online presence),雅虎已经停服,照着做程序会在调用EndMessage时报错……到处是坑……
有几个注意问题:
1、命名空间问题:
由于使用XML,要在程序中使用命名空间:using namespace MSXML2;如果是VC++控制台程序没什么问题,如果编译时,报错:error C2872:“IXMLDOMDocumentPtr”为不明确的符号
发现已经说明了编译器对IXMLDOMXXX不明确,有两个选择:安装包中默认的msxml.h和生成目录下的msxml4.tlh,导致编译器不知道该用哪个。解决方法参考论坛的方法:去掉namespace,显式的限定接口声明.就是用MSXML2::IXMLDOMDocumentPtr docPtr。不使用命名空间using namespace MSXML2。