CPP-网络/通信:WebService
工具:vc2003
//引入相关头文件,连接动态库,定义全局变量。 //*****************************************************
#include "resource.h"
#include "xml/Markup.h"
#import "msxml4.dll" #import "C:/Program Files/Common Files/MSSoap/Binaries/mssoap30.dll" exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER","_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
using namespace MSSOAPLib30;
using namespace std; #include "XmlRW.h"
using namespace MSXML2; _bstr_t g_strNameSpace = "urn:SmsNewOperator";
//****************************************************
webservice下发短信短信实例:
BOOL WebserviceSubmit(CString g_strQXTUser,CString g_strQXTPSW,CString strMobilePhoneNumber,CString strSMSSubject,CString &strErrorMsg)
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector; HRESULT hr; //Connect to the service.
hr = Connector.CreateInstance(__uuidof(HttpConnector30));//创建对象
if(FAILED(hr))
{
printf("创建COM对象失败\n");
g_DebugMsg.Sprintf("创建COM对象失败\n");
return FALSE;
} Connector->Property["EndPointURL"] ="http://211.162.125.74/ema/services/SmsNewOperator?wsdl"; //EndPointURL指定web服务 hr = Connector->Connect();
if (FAILED(hr))
{
printf("创建HttpConnector30实例失败!\n");
g_DebugMsg.Sprintf("创建HttpConnector30实例失败!\n");
return FALSE;
} //开始消息//消息体,// //在与服务器连接后,我们需要指定Web服务完成的操作 ,为了指定该操作,我们需要再次使用SoapConnector的Property属性
Connector->Property["SoapAction"] = "urn:SmsNewOperator/sendSms"; //函数体参数
Connector->BeginMessage(); hr = Serializer.CreateInstance(__uuidof(SoapSerializer30));
if (FAILED(hr))
{
printf("创建soapSerializer失败!\n");
g_DebugMsg.Sprintf("创建soapSerializer失败!\n");
return FALSE;
} Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
//Build the SOAP Message.创建soap消息
Serializer->StartEnvelope("","NONE",""); //第一个参数是命名空间。
Serializer->StartBody(""); Serializer->StartElement("sendSms",g_strNameSpace,"NONE",""); //函数处理 //第一个参数处理
Serializer->StartElement("account","","NONE","");
Serializer->WriteString((_bstr_t)g_strQXTUser);
Serializer->EndElement(); //第二个参数处理
Serializer->StartElement("password","","NONE","");
Serializer->WriteString((_bstr_t)g_strQXTPSW);
Serializer->EndElement(); //第三个参数处理
Serializer->StartElement("message",g_strNameSpace,"NONE",""); Serializer->StartElement("phoneNumber","","NONE","");
Serializer->WriteString((_bstr_t)strMobilePhoneNumber);
Serializer->EndElement(); Serializer->StartElement("content","","NONE","");
Serializer->WriteString((_bstr_t)strSMSSubject);
Serializer->EndElement(); /*
Serializer->StartElement("scheduleTime","","NONE","");
Serializer->WriteString((_bstr_t)strscheduleTime);
Serializer->EndElement();
*/
//第三个参数处理完成
Serializer->EndElement(); //第四个参数作为返回信息
Serializer->StartElement("sendResMsg","","NONE","");
Serializer->WriteString("");
Serializer->EndElement(); //第五个参数作为返回信息
Serializer->StartElement("errMsg","","NONE","");
Serializer->WriteString("");
Serializer->EndElement(); //设置接口函数sendsms结束
Serializer->EndElement(); Serializer->EndBody();
Serializer->EndEnvelope(); Connector->EndMessage(); Reader.CreateInstance(__uuidof(SoapReader30)); Reader->Load(_variant_t((IUnknown*)Connector->OutputStream),""); //加载返回数据 // Display the result.
strErrorMsg = (const char*)Reader->Body->xml; g_DebugMsg.Sprintf("Answer:%s\n\n", (const char*)Reader->Body->xml); return TRUE;
}
CPP-网络/通信:WebService的更多相关文章
- 网络协议-webService协议
webservice 协议 Web Service使用的是 SOAP (Simple Object Access Protocol)协议soap协议只是用来封装消息用的.封装后的消息你可以通过各种已有 ...
- [转]Android的网络与通信
本文转自:http://www.cnblogs.com/qingblog/archive/2012/06/15/2550735.html 第一部分 Android网络基础 Android平台浏览器 ...
- socket 网络编程
1. 基础socket库 socket.h: /** * 网络套接字库 */ #ifndef Socket_h #define Socket_h #include <stdio.h> #i ...
- Day8 - Python网络编程 Socket编程
Python之路,Day8 - Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...
- HCNA之网络通信基础
一.通信与网络 通信的概念我们并不陌生,在人类社会的起源和发展过程中,通信就直伴随着我们.般认为, 20世纪七.八十年代,人类社会已进入到信息时代,对于生活在信息时代的我们,通信的必要性和重要性更是不 ...
- 初学Python——Socket网络编程
认识socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递.我们知道网络 通信 都 是基于 ip+port(端口) 方能定位到目标的具体机 ...
- go语言之行--网络编程、http处理流程详情
一.简介 go语言中的网络编程主要通过net包实现,net包提供了网络I/O接口,包括HTTP.TCP/IP.UDP.域名解析和Unix域socket等.和大多数语言一样go可以使用几行代码便可以启动 ...
- docker进阶——数据管理与网络
一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...
- Day8-Python3基础-Socket网络编程
目录: 1.Socket语法及相关 2.SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道 ...
- Python之网络编程 Socket编程
本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实 ...
随机推荐
- Lightoj 1008【规律】
25 24 23 22 21 10 11 12 13 20 9 8 7 14 19 2 3 6 15 18 1 4 5 16 17 然后把这个转化成: 17 18 19 20 21 10 11 12 ...
- ugui mask失效
android平台 PlayerSettings-Resolution and Presentation-DisableDepth and Stencil这项勾选,mask失效
- [Xcode 实际操作]二、视图与手势-(3)UIView视图的基本操作
目录:[Swift]Xcode实际操作 本文将实现视图的添加与删除,以及切换视图在父视图中的层次. import UIKit class ViewController: UIViewControlle ...
- Django框架的安装,项目创建
目录 Django框架的安装,项目创建 方法安装 Django版本选择 1.11.21(最新LTS版) django管理目录 命令行创建项目 django项目 命令行启动 (必须在项目文件下执行) p ...
- 基础篇-psql帮助命令
\? psql命令帮助 \h sql语句帮助 \?常用命令 1.默认 \d 后面不跟参数,则显示当前数据库所有的表 2. \d 表名 ,则显示这个表的定义 3.\d 索引名 ,显示索引的信息 ...
- ADO winform登录
做一个程序,首先应该从登录,注册.以及增,删,改查开始,本页分享一下程序的登录 登录我们首先要有数据,所以要连接数据库,从数据库中获取我们用户的账号及密码.连接 数据库的代码:创建连接:SqlConn ...
- 解决DDOS攻击生产案例
根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP. 当然各个公司的IP并发数各有不同,上面只是举例说明. 因为我的Nginx的WEB日 ...
- webpack 中导入 vue 和普通网页使用 vue 的区别(四)
一:在普通网页中使用 vue 使用 script 标签,引入 vue 包 在 ndex 页面中,创建一个 id 为 App 的 div 容器 通过 new Vue 得到一个 vue 实例 二:在 we ...
- jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)
jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...
- bootstrapValidator 常用的验证
$("#表单ID").bootstrapValidator({ message: 'This value is not valid', excluded: [':disabled' ...