mssoap与gsoap访问WebService的使用
来源:互联网 发布:短信轰炸php源码 编辑:程序博客网 时间:2024/05/21 12:46
1.mssoap使用:
本人win7 x64 vs2010测试机,
包含头,引用库,命名空间
#include "stdafx.h"#include <stdio.h>#include "windows.h"#import "msxml4.dll"//using namespace MSXML2;#include "msxml.h"#import "C:/Program Files (x86)/Common Files/MSSoap/Binaries/mssoap30.dll" exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")using namespace MSSOAPLib30;测试代码:
void CMFCTestDlg::OnBnClickedBtOutput(){// TODO: 在此添加控件通知处理程序代码CoInitialize(NULL);ISoapSerializerPtr Serializer;ISoapReaderPtr Reader;ISoapConnectorPtr Connector;HRESULT hr=Connector.CreateInstance(__uuidof(HttpConnector30)); //创建连接实例if(!SUCCEEDED(hr)){ MessageBox(_T("error"));return;}//服务所在地址和端口;Connector->Property["EndPointURL"] = "http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl";//网上找到webservice网址Connector->Connect();//Connector->Property["SoapAction"] = "http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl";Connector->BeginMessage();Serializer.CreateInstance(__uuidof(SoapSerializer30));Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));Serializer->StartEnvelope("soap","","");//Serializer->SoapAttribute("xsi", "", "http://www.w3.org/2001/XMLSchema-instance", "xmlns"); Serializer->SoapAttribute("xsd", "", "http://www.w3.org/2001/XMLSchema", "xmlns");//Serializer->SoapAttribute("soap12", "", "http://schemas.xmlsoap.org/soap/envelope/", "xmlns");Serializer->SoapAttribute("soapenc","","http://schemas.xmlsoap.org/soap/encoding/","xmlns");Serializer->SoapAttribute("tns","","http://www.webxml.com.cn/","xmlns");Serializer->SoapAttribute("types","","http://www.webxml.com.cn/encodedTypes","xmlns");Serializer->StartBody(L"NONE");Serializer->StartElement("getEnCnTwoWayTranslator","http://WebXml.com.cn/","NONE","xmlns"); // 开放的接口Serializer->StartElement("Word","http://WebXml.com.cn/","NONE","");//参数Serializer->SoapAttribute("xsi:type","","xsd:string","");Serializer->WriteString("hello"); //传参Serializer->EndElement();Serializer->EndElement();Serializer->EndBody();Serializer->EndEnvelope();Connector->EndMessage(); Reader.CreateInstance(__uuidof(SoapReader30));Reader->Load(_variant_t((IUnknown*)Connector->OutputStream),"");SetDlgItemText(IDC_EDIT1, Reader->RpcResult->xml);//(const char*)}
2.gsoap使用:
首先官网下载windows版zip解压,在bin目录下有两个exe,命令行中使用wsdl2h或soapcpp2 -h可查看可使用命令。
wsdl2h.exe 解析WebService的wsdl文件或者相应的URL ,本测试-o导出到*.h.(-s 不指定这个需要有stlvector.h头文件,多个wsdl文件用空格隔开)
例:wsdl2h.exe -s -o out.h a.wsdl b.wsdl
soapcpp2.exe 编译WebService代码,编译解析后得到的*.h文件.
生成文件较多。如果是客户端使用可加参数 -C编译。
例:soapcpp2.exe -C out.h
(-h查看更多命令)
包含头:
#include "sf/soapStub.h"#include "sf/soapH.h"#include "sf/procSMSSoapBinding.nsmap"
void CMFCTestDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码soap sService;_ns1__getEnCnTwoWayTranslator *pTrans = new _ns1__getEnCnTwoWayTranslator;CString strWord(_T("word"));pTrans->Word = new std::string(UnicodeToUTF8(strWord));_ns1__getEnCnTwoWayTranslatorResponse TransResp;soap_init(&sService);soap_set_mode(&sService,SOAP_C_UTFSTRING);//SOAP_C_UTFSTRING,SOAP_C_MBSTRINGsoap_call___ns1__getEnCnTwoWayTranslator(&sService,"http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl","http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx/",pTrans,TransResp);ns1__ArrayOfString* pAS = TransResp.getEnCnTwoWayTranslatorResult;std::string strXml;vector<std::string>::iterator it = pAS->string.begin();while (it != pAS->string.end()){strXml += *it;strXml += "\n";it++;}CString strMsg(UTF8ToUnicode(strXml.c_str()));SetDlgItemText(IDC_EDIT1, strMsg);//(const char*)}
两者调用都不复杂,但,个人表示,mssoap可封装性好过gsoap,当网址、接口更改时,gsoap需要重新编译生成接口文件,而mssoap只需相应调整参数即可。但mssoap往往需要自家的xml解析类,不如gsoap纯净的感觉。而且gsoap编译生成的接口文件是纯C/C++的文件,应该是跨平台的。
1 0
- mssoap与gsoap访问WebService的使用
- MSSOAP与WebService
- c++使用gsoap访问webservice
- c++访问webservice(gsoap简单使用)
- gsoap访问webservice
- 使用GSoap开发WebService客户端与服务端
- 客户端使用gsoap,访问基于jax-ws框架的java webservice
- gsoap的使用(调用webservice)
- QT+Gsoap访问cxf WebService
- gsoap 访问c# webservice 返回数据集的示例小结
- vc中使用gsoap与dotnet的webservice通讯返回值编码
- C++使用gsoap创建webService
- C++使用gsoap创建webService
- C++使用gsoap创建webService
- Qt使用gSOAP调用WebService
- webservice 前端gsoap 使用总结
- VC 2010 使用GSOAP调用C#写的WEBSERVICE
- c/c++使用gsoap调用wcf发布的webservice
- HDU 5318 The Goddess Of The Moon(矩阵快速幂详解)
- 解决 Mac OS X 中 VT/NX 未开启问题
- C#与VC++数据类型对应关系
- ibatis事物管理不起作用
- rtt
- mssoap与gsoap访问WebService的使用
- Linux系统(X64)安装Oracle11g
- OC学习笔记06--OC运行时中类的加载、初始化 和方法调用机制,SEL类型
- MD5算法介绍及jdk自带实现方式
- viewpager两层嵌套+内层循环滑动
- C# StructLayouAttribute属性
- linux ip地址设置(静态)
- 基于 Selenium WebDriver 的 Web 应用自动化测试
- linux识别ntfs文件系统