近期VC6.0的老项目中需要增加一个调用远程webservice的功能,尝试了gSoap,很累很累得一番折腾之后,调用是成功了,但是因为gSoap返回的数据是封装好的,但gSoap资料匮乏,很难查到怎样从这些封装里面取出数据的方法,眼睁睁看着数据返回了,却无法处理。

折腾了好久,改用了微软自己的MSSOAP,很快搞定了,方法记录如下:

1. 安装soapsdk

下载:​​http://download.microsoft.com/download/2/e/0/2e068a11-9ef7-45f5-820f-89573d7c4939/soapsdk.exe​​)


VC++6.0 调用webservice (使用MS SOAP)_VC  教程

VC++6.0 调用webservice (使用MS SOAP)_编程开发_02

 

2. 下载 MSSOAP30.dll和msxml4.dll,

备用下载:​​https://download.csdn.net/download/zhouyingge1104/12520216​

下载之后,把这两个dll放到项目的debug目录中,也就是和exe一个目录。

3. 下载webService.h文件

备用下载:

4. 写程序:

#include "webService.h"

int main(int argc, char* argv[])
{
printf("Hello World!\n");

char* arc1[] = {"strXML"}; //参数名称
char* arc2[] = {"<webService><head>XXX</head><request>XXX</request></webService>"}; //参数值

CoInitialize(NULL); //设置单线程运行

int code = webService("http://11.111.111.11:9010/InterfaceTest/sDataInfrace.asmx?wsdl",
"http://tempuri.org/",
"GetSampInfo",
1,
arc1,
arc2);

CoUninitialize();

printf("code:%d \n", code);

return 0;
}

输出:

VC++6.0 调用webservice (使用MS SOAP)_VC  教程_03

返回的是原始的字符串,这样就能在程序中直接读取并处理了。