CPP-网络/通信:WebService

工具:vc2003

 1 //引入相关头文件,连接动态库,定义全局变量。
 2 
 3 //*****************************************************
 4 #include "resource.h"
 5 #include "xml/Markup.h"
 6 #import "msxml4.dll"
 7 
 8 #import "C:/Program Files/Common Files/MSSoap/Binaries/mssoap30.dll" exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER","_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
 9 using namespace MSSOAPLib30;
10 using namespace std;
11 
12 #include "XmlRW.h"
13 using namespace MSXML2;
14 
15 _bstr_t g_strNameSpace = "urn:SmsNewOperator";
16 //****************************************************

 

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;
}

 

转载于:https://www.cnblogs.com/CPYER/p/3289453.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值