工具: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. 为Docker容器设置静态IP

    此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 创建docker容器 docker run -it --name=yh -h yh --net=none de ...

  2. AndroidStudio关联GitHub

    1.前提: 1.已有github账号和密码 github官方网站:https://github.com/ 2.下载了git客户端 客户端下载地址:http://pan.baidu.com/s/1slV ...

  3. CTP 下单返回错误: 没有报单权限 和字段错误需要注意的问题

    没有报单权限一般被认为期货公司没有开权限, 但是更多的问题是没有填写 BrokerId, InvestorId 下单字段错误注意一个容易忽略的地方: a. order 应该全部设为0, b. orde ...

  4. MySQL 分区简介

    MySQL自5.1开始对分区(Partition)有支持. = 水平分区(根据列属性按行分)=举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录. 水平分 ...

  5. jdbc学习day1

  6. nutzboot dubbo zookeeper简单使用

    提供方和消费方properties 配置基本差不多 nutz.application.name这个值不一样 提供方配置自动端口就行server.port=0 消费方一般需要对外提供web服务配置ip和 ...

  7. java排序之冒泡排序

    代码: package com.cn.algorithm_arithmetic算法; /** * 本程序记录了经典排序算法之冒泡排序 * @author Administrator * */ publ ...

  8. Codeforces 1139D(推式子+dp)

    题目传送 推公式博客传送 推完式子就是去朴素地求就行了Orz const int maxn = 1e5 + 5; const int mod = 1e9 + 7; int m, mu[maxn], v ...

  9. 转 Linux SendMail发送邮件失败诊断案例(四)

    http://www.cnblogs.com/kerrycode/p/7826036.html

  10. jQuery取得/设置select的值

    本来以为jQuery("#select1").val();是取得选中的值, 那么jQuery("#select1").text();就是取得的文本. 这是不正确 ...