通过soapSDK调用webservice接口

由于在上传报警服务器过车数据时,第三方平台提供了webservice接口。以前用VC++2003做过调用webservice接口,直接在Project菜单下的add web Reference填入相关的名称,VC++2003会自动生成相关的类,在调用的地方只要定义一个实例就可以调用webservice接口了,但是在测试南通卡口数据上传项目时发现,编译时总是提示命名空间不对,后来查找资料发现webservice接口编写不规范会导致webservice接口的 namespace不对。我们不能要求第三方修改webservice接口,只查找其他方法。于是通过soap调用webservice接口。以下是详细步骤:

1、首先下载安装soapsdk3.0

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

2、在头文件中引入必要的库的,包含相应的命名空间

#import "msxml4.dll" 

using namespace MSXML2;

#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP30.dll" \

exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", \

"_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")

using namespace MSSOAPLib30;

3、在cpp文件中调用soap提供的接口,直接贴代码

try   

{   

// Web服务连接

pDlg->Connector.CreateInstance(__uuidof(HttpConnector30));

// http://10.36.6.4/video/control.asmx?op=WriteTgclJl为调用页面,在URL里指定你的服务器名

pDlg->Connector->Property["EndPointURL"] = "http://10.36.6.4/video/control.asmx?op=WriteTgclJl"; 

pDlg->Connector->Connect();    

 

// 开始消息,http://10.36.6.4/video/WriteTgclJl为响应函数,

pDlg->Connector->Property["SoapAction"] = "http://10.36.6.4/video/WriteTgclJl";

pDlg->Connector->BeginMessage(); //启动消息句柄

 

// 创建SoapSerializer对象

pDlg->Serializer.CreateInstance(__uuidof(SoapSerializer30)); 

// serializer 连接到 connector 的输入字符串

pDlg->Serializer->Init(_variant_t((IUnknown*)pDlg->Connector->InputStream));

// 创建ISoapReaderPtr对象

pDlg->Reader.CreateInstance(__uuidof(SoapReader30)); 

// 创建SOAP消息

pDlg->Serializer->StartEnvelope("","","");

 // pDlg->Serializer ->StartEnvelope("","STANDARD","")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值