突然要在c++里调用webservice,一时还不知道从何下手,又想起了.net的好了,直接用wsdl命令生成一个代理类就搞定了,于是又开始了在网上寻觅的历程。这年代没有google,估计要少活10年。
搜索"vc6"+Webservice,出来了一大堆,不过内容基本上一样(又让我体会了一把“天下文章一大抄”的经典论据,到头来都不知道谁抄谁)也有博客园里的兄弟写的,但拷下来总是不好用,不过知道了要用到soapsdk3.0,于是down了一个,安装完了就是一堆com,又开始google"mssoap30.dll"+"vc",这次搜索所有网页,出来了一堆英文页面,翻了好几页,看了一大堆的英文后,终于找到了点眉目,也稍微整理一下。
1:先安装soapsdk3.0(http://download.microsoft.com/download/2/e/0/2e068a11-9ef7-45f5-820f-89573d7c4939/soapsdk.exe)
2:当然就是写代码
WSWrapper.h
1
#ifndef _WS_WRAPPER_H_
2
#define _WS_WRAPPER_H_
3
4
#import "msxml4.dll"
5
#import "C:\Program Files\Common Files\MSSoap\Binaries\mssoap30.dll" \
6
exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", \
7
"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
8
#include <string>
9
#include <Windows.h>
10
11
using namespace MSXML2;
12
using namespace MSSOAPLib30;
13
using std::string;
14
15
class WSWrapper
16
#endif
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WSWrapper.cpp
1
#include "WSWrapper.h"
2
3
WSWrapper::WSWrapper(const char *wsURL,
4
const char *wsNameSapce,
5
const char *wsMethodName)
6
: _wsURL(wsURL),
7
_wsNameSapce(wsNameSapce),
8
_wsMethodName(wsMethodName)
9
2
3
4
5
6
7
8
9
TestApp.cpp
1
#include "WSWrapper.h"
2
3
int main()
4
2
3
4
C#写的一个测试WebService
1
using System.ComponentModel;
2
using System.Web.Services;
3
4
namespace TestWebService
5
2
3
4
5