工具: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的更多相关文章

  1. 网络协议-webService协议

    webservice 协议 Web Service使用的是 SOAP (Simple Object Access Protocol)协议soap协议只是用来封装消息用的.封装后的消息你可以通过各种已有 ...

  2. [转]Android的网络与通信

    本文转自:http://www.cnblogs.com/qingblog/archive/2012/06/15/2550735.html 第一部分 Android网络基础   Android平台浏览器 ...

  3. socket 网络编程

    1. 基础socket库 socket.h: /** * 网络套接字库 */ #ifndef Socket_h #define Socket_h #include <stdio.h> #i ...

  4. Day8 - Python网络编程 Socket编程

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  5. HCNA之网络通信基础

    一.通信与网络 通信的概念我们并不陌生,在人类社会的起源和发展过程中,通信就直伴随着我们.般认为, 20世纪七.八十年代,人类社会已进入到信息时代,对于生活在信息时代的我们,通信的必要性和重要性更是不 ...

  6. 初学Python——Socket网络编程

    认识socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递.我们知道网络 通信 都 是基于 ip+port(端口) 方能定位到目标的具体机 ...

  7. go语言之行--网络编程、http处理流程详情

    一.简介 go语言中的网络编程主要通过net包实现,net包提供了网络I/O接口,包括HTTP.TCP/IP.UDP.域名解析和Unix域socket等.和大多数语言一样go可以使用几行代码便可以启动 ...

  8. docker进阶——数据管理与网络

    一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...

  9. Day8-Python3基础-Socket网络编程

    目录: 1.Socket语法及相关 2.SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道 ...

  10. Python之网络编程 Socket编程

    本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实 ...

随机推荐

  1. 动态加载dll

    extern "C" MMUPDATENOTIFY_IMPEXP bool _cdecl NotifyThrift(char* chThriftIp, char* chPor) H ...

  2. 2014-6-28 NOIP模拟赛

    [今天我出的三道题目全部是图论哦,请大家轻虐] 1.魔术球问题弱化版(ball.c/.cpp/.pas) 题目描述 假设有 n 根柱子,现要按下述规则在这 n 根柱子中依次放入编号为 1,2,3,…的 ...

  3. IT兄弟连 JavaWeb教程 Servlet会话跟踪 创建Cookie

    Tomcat作为Web服务器,对Cookie提供了良好的支持.那么,运行在Tomcat的Servlet该如何访问Cookie呢?幸运的是,Servlet无需直接和HTTP请求或响应中的原始Cookie ...

  4. 51Nod 1099 任务执行顺序 (贪心)

    #include <iostream> #include <algorithm> using namespace std; +; struct node{ int r, q; ...

  5. 存储-InfluxDB

    1 TSDB influxDB是一个time series时间序列数据库. 在监控系统的开发中,大体分为采集-存储-可视化三个大类.监控指标有很显著的时间特征数据,一般采用TSDB存储. 在TSDB中 ...

  6. Day1课后作业:用户登录简单版

    user = "gaojun"password ="123abc"for i in range(3): user = input('请输入用户名:') pass ...

  7. Macbook上sublime的C++11弥补bits/stdc++.h的配置

    如果在windows配置过的话这次会容易很多.相关博客很多了,我这里保存一下我借鉴并成功的配置: 关于自己build的C++,文件类型为sublime-build,直接扔在它给出的user文件夹即可, ...

  8. 自己写一个轻量的JqueryGrid组件

    接触mvc不久,突然没有了viewstate和服务端控件处处都觉得不顺手,很多在webform时不必要考虑的问题都出现在眼前,这其中分页时查询条件保持的问题又是最让我头疼的事情,权衡再三,决定用aja ...

  9. 543 Diameter of Binary Tree 二叉树的直径

    给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过根结点.示例 :给定二叉树          1         / \        2 ...

  10. 记住,永远不要在MySQL中使用“utf8”-转

    http://www.infoq.com/cn/articles/in-mysql-never-use-utf8-use-utf8 最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的M ...