一、彩信语音SDK初始化CWebInterface

CWebInterface::CWebInterface(CString   &strSN,CString   &strPwd)
{m_pEndpoint =NULL;m_pSN = UnicodeToUTF8(strSN);CString strMD5Source = strSN + strPwd;char *pMD5Source =UnicodeToANSI(strMD5Source);char szMD5Code[64]={0};MD5Memory(pMD5Source,strlen(pMD5Source),szMD5Code,64); strupr(szMD5Code);free(pMD5Source);m_pMd5 =(char*)malloc(33);memcpy(m_pMd5,szMD5Code,33);m_WebService.soap->recv_timeout =150; //秒m_WebService.soap->send_timeout =150;m_WebService.endpoint = "http://sdk3.entinfo.cn:8060/webservice.asmx";//赋个初始值,防止从配置文件读取服务器地址失败时访问不了服务器if(strlen(g_pEndpoint) >0){m_WebService.endpoint=g_pEndpoint;}soap_set_mode(m_WebService.soap, SOAP_C_UTFSTRING); //设置编码为UTF8.SDK说明文档上说使用gb2312,但实测必须用utf8.
}

二、切换主备服务器SetWebsAddress(char *pszAddr)  

 void CWebInterface::SetWebsAddress(char *pszAddr)//切换主备服务器
{if (!pszAddr) return;if (m_pEndpoint) free(m_pEndpoint);int nLen =strlen(pszAddr)+1;m_pEndpoint = (char*)malloc(nLen);ZeroMemory(m_pEndpoint,nLen);strcpy(m_pEndpoint,pszAddr);m_WebService.endpoint =m_pEndpoint;
}

三、查询账户余额GetBalance()   

参数名称

说明

备注

Sn

软件序列号

格式XXX-XXX-XXX-XXXXX

Pwd

密码

md5(sn+password) 32位大写 密文 +表示连接

函数返回值:String(余额)

接口地址:http://sdk3.entinfo.cn:8060/webservice.asmx?op=balance

示例:序列号SDK-SSD-010-00001 密码 xxxxxx

参数输入:

SN= SDK-SSD-010-00001

PWD= 3B5D3C427365F40C1D27682D78BB31E0

示例返回结果: 余额79109条短信

XML格式:

具体函数C++实现:

int CWebInterface::GetBalance()
{_ns1__balance  param1;_ns1__balanceResponse  WebsResult;param1.sn = m_pSN;param1.pwd =m_pMd5;SetTimeout(30);int nRet =m_WebService.__ns2__balance(¶m1,&WebsResult); if (nRet){if (g_bHaveChange)//已经切换成备用地址,此时主备都不通,返回查询失败{return WEBS_RET_FAIL;}else{for(int i=0;i<=g_nFailedCount;i++){nRet =m_WebService.__ns2__balance(¶m1,&WebsResult);if (!nRet){break;}}if (nRet){                     SetWebsAddress(g_pBackupEndpoint);//切换到备用地址             char szTmp[512];strcpy(g_pEndpoint,g_pBackupEndpoint);g_bHaveChange = true;    AfxMessageBox("主地址不通,已经自动切换到备用地址,请检查您的网络,如仍有问题请联系我们!");nRet =m_WebService.__ns2__balance(¶m1,&WebsResult);   if (nRet){return WEBS_RET_FAIL;}}}}int nSvrRet =atoi(WebsResult.balanceResult);if ( nSvrRet < WEBS_RET_OK){return  WEBS_RET_FAIL;}return  nSvrRet;
}

四、群发彩信函数SendMMS(CString csTitle,char *pMobiles,MMSCONTENT *MmsContent,CString csTime)

参数名称

说明

是否必须

备注

Sn

软件序列号

格式XXX-XXX-XXX-XXXXX

Pwd

密码

md5(sn+password) 32位大写密文

title
彩信主题

限制在30字符以内

Mobile

手机号

手机号码多个以英文逗号隔开

Content

内容

base64编码(文件名1,文件base64编码串;文件名2,文件base64编码串);实际发送文件小于等于50*1024 字节

stime

定时时间

例如:2010-12-29 16:27:03(非定时置空)

函数返回值:String。

content是您发送的彩信的内容:包含图片和声音及文本;

1.文件类型: 文本是.txt 图片是.jpg或者.gif 声音是.mid或者.amr

2.内容格式:

帧数_文件类型.扩展名 + 英文逗号 + 文件的base64编码字符串 + 分号 ;

例如:“1_1.txt,” + 文件base64编码字符串 + “;” + “1_2.jpg,” + 文件base64编码字符串+”;”+”1_3.mid”+文件base64编码字符串

文本是 n_1.txt  图片是 n_2.jpg 或者是 n_2.gif  声音是 n_3.mid ;

N表示当前第几帧,后缀不变,编码均为GB2312。

接口地址:http://sdk3.entinfo.cn:8060/webservice.asmx?op=mdMmsSend

示例1

SN= SDK-SSD-010-00001

PWD=3B5D3C427365F40C1D27682D78BB31E0

title:彩信标题

Mobile:139***404,138***213…………….

Content:测试

Stime: ""

输出结果:

XML格式:

具体函数C++实现:

int CWebInterface::SendMMS(CString csTitle,char *pMobiles,MMSCONTENT *MmsContent,CString csTime){_ns1__mdMmsSend  param1;_ns1__mdMmsSendResponse WebsResult;#define  DESBUF_LEN      MAX_FILE_LEN_MMS *2 int iWillSendLen=0;CString csSendContent;CString csPicFullPath=MmsContent->csPicPath;CString csSoundFullPath=MmsContent->csSoundPath;CString csTxt=MmsContent->csTxt;if (csPicFullPath!=_T("")){CString csPicType;char *pBase64Pic=new char[DESBUF_LEN];ZeroMemory(pBase64Pic,DESBUF_LEN);char *pFileBufPic= new char[MAX_FILE_LEN_MMS ];ZeroMemory(pFileBufPic,MAX_FILE_LEN_MMS);int iDesBufLen= DESBUF_LEN;    int iIndex=csPicFullPath.ReverseFind(_T('.'));CString csExtName=csPicFullPath.Right(csPicFullPath.GetLength()-iIndex);csPicType.Format(_T("%d_2%s"),1,csExtName);csPicType+=_T(",");char *pTemp=UnicodeToUTF8(csPicType);strcpy(pBase64Pic,pTemp);  free(pTemp);int iPosEncode = strlen(pBase64Pic);        char *pszFileName = UnicodeToANSI(csPicFullPath);FILE *pFile = fopen(pszFileName,"rb");if(!pFile){delete []pBase64Pic;  delete []pFileBufPic;   return  -100;}free(pszFileName);fseek(pFile,0,SEEK_END);long lFileLen = ftell(pFile);if (lFileLen > MAX_FILE_LEN_MMS){delete []pBase64Pic;  delete []pFileBufPic;CString csPicErr;csPicErr.Format(_T("图片文件大小超过%dK"),MAX_FILE_LEN_MMS/1024);::MessageBox(0,csPicErr,MESSAGE_INFO,MB_OK|MB_ICONERROR);return -101;}fseek(pFile,0,SEEK_SET);int  iReadFile = fread(pFileBufPic,1,lFileLen,pFile);fclose(pFile); Base64Encode((byte*)pFileBufPic,iReadFile,pBase64Pic + iPosEncode ,&iDesBufLen);WCHAR *wpPic=UTF8ToUnicode(pBase64Pic);CString csEncodePic=wpPic;csSendContent+=csEncodePic+_T(";");iWillSendLen+=lFileLen;free(wpPic);delete []pBase64Pic;   delete []pFileBufPic;}if (csSoundFullPath!=_T("")){CString csSoundType;char *pBase64Sound=new char[DESBUF_LEN];ZeroMemory(pBase64Sound,DESBUF_LEN);char *pFileBufSound= new char[MAX_FILE_LEN_MMS ];ZeroMemory(pFileBufSound,MAX_FILE_LEN_MMS);int iDesBufLen= DESBUF_LEN;int iIndex=csSoundFullPath.ReverseFind(_T('.'));CString csExtName=csSoundFullPath.Right(csSoundFullPath.GetLength()-iIndex);csSoundType.Format(_T("%d_3%s"),1,csExtName);csSoundType+=_T(",");char *pTemp=UnicodeToUTF8(csSoundType);strcpy(pBase64Sound,pTemp);  free(pTemp);int iPosEncode = strlen(pBase64Sound);        char *pszFileName = UnicodeToANSI(csSoundFullPath);FILE *pFile = fopen(pszFileName,"rb");if(!pFile){delete []pBase64Sound;  delete []pFileBufSound;return -100;}free(pszFileName);fseek(pFile,0,SEEK_END);long lFileLen = ftell(pFile);if (lFileLen > MAX_FILE_LEN_MMS){delete []pBase64Sound;  delete []pFileBufSound;CString csSoundErr;csSoundErr.Format(_T("声音文件大小超过%dK"),MAX_FILE_LEN_MMS/1024);::MessageBox(0,csSoundErr,MESSAGE_INFO,MB_OK|MB_ICONERROR);return -101;}fseek(pFile,0,SEEK_SET);int iReadFile = fread(pFileBufSound,1,lFileLen,pFile);fclose(pFile);    Base64Encode((byte*)pFileBufSound,iReadFile,pBase64Sound + iPosEncode ,&iDesBufLen);WCHAR *wpPic=UTF8ToUnicode(pBase64Sound);CString csEncodePic=wpPic;csSendContent+=csEncodePic+_T(";");iWillSendLen+=lFileLen;free(wpPic);delete []pBase64Sound;   delete []pFileBufSound;}if (csTxt!=_T("")){CString csTxtType;char *pBase64Txt=new char[DESBUF_LEN];ZeroMemory(pBase64Txt,DESBUF_LEN);int iDesBufLen= DESBUF_LEN;csTxtType.Format(_T("%d_1.txt"),1);csTxtType+=_T(",");char *pTemp=UnicodeToUTF8(csTxtType);strcpy(pBase64Txt,pTemp);  free(pTemp);int iPosEncodeTxt = strlen(pBase64Txt);  char * pFileBufTxt=UnicodeToANSI(csTxt);int iLen=strlen(pFileBufTxt);Base64Encode((byte*)pFileBufTxt,iLen,pBase64Txt + iPosEncodeTxt ,&iDesBufLen);WCHAR *wpTxt=UTF8ToUnicode(pBase64Txt);CString csEncodeTxt=wpTxt;csSendContent+=csEncodeTxt+_T(";");iWillSendLen+=iLen;free(pFileBufTxt);free(wpTxt);    delete []pBase64Txt;    }csSendContent=csSendContent.Left(csSendContent.GetLength()-1);//去掉最后一个分号.if (iWillSendLen>MAX_FILE_LEN_MMS){CString csTotle;csTotle.Format(_T("本条彩信超过%dK"),MAX_FILE_LEN_MMS/1024);::MessageBox(0,csTotle,MESSAGE_INFO,MB_OK|MB_ICONERROR);return -101;}param1.sn =UnicodeToUTF8(Pregister->szSerNO);param1.pwd =m_pMd5;param1.mobile=pMobiles;param1.title=UnicodeToUTF8(csTitle);    param1.content=UnicodeToUTF8(csSendContent);   param1.stime= UnicodeToUTF8(csTime);   SetTimeout(150);int nRet =m_WebService.__ns2__mdMmsSend(¶m1,&WebsResult);  free(param1.sn);    free(param1.title); // free(param1.mobile); free(param1.content);   free(param1.stime);if (nRet){return WEBS_RET_FAIL;}char szResult[6]={0};memcpy(szResult,WebsResult.mdMmsSendResult,5);int nSvrRet =atoi(szResult);if ( nSvrRet >= WEBS_RET_OK){return WEBS_RET_OK;}return  WEBS_RET_FAIL;}

五、webservice返回集合对照表:

返回值

返回值说明

1

没有数据需要接收

-2

帐号/密码不正确

-3

重复登陆

-4

余额不足

-5

数据格式错误

-6

参数有误

-8

流量控制错误

-11

数据库错误

-12

序列号状态错误

-13

没有提交增值内容

-14

服务器写文件失败

-17

该接口禁止使用该方法

-18

等上一批提交结果返回再继续下一批提交

-15

内容长度长

-22

Ip绑定

六、附加说明:

1.彩信语音SDK地址:

常用接口地址:http://sdk3.entinfo.cn:8060/webservice.asmx

2.其它说明:

(1)开发使用的帐号必须为SDK开头,如SDK-SSD-010-00001,帐号第一次需要调用Register方法注册一次.仅需注册一次即可,信息必须真实

(2)UnRegister与Register配合使用, 连续使用不得超过10次/天;

3. 郑重声明:

(1)禁止相同的内容多个手机号连续一条一条提交. 否则禁用帐号,由此带来损失由客户自行负责.

(2)请客户提供外网服务器IP以便于绑定IP发送,提高账号的安全性!

(3)在程序里最好有配置文件,程序自动判断当某个接口连接超时提交速度变慢时.程序可以自动切换其它的接口以下是推荐的几个服务器,仅接口地址不同而已.方法全部相同;

地址1:http://sdk3.entinfo.cn:8060/webservice.asmx

这些地址都是标准的webservice地址,C#,Java客户可以按照自己熟悉的方式去解析String

或者

地址1:http://sdk3.entinfo.cn:8060/webservice.asmx?wsdl

八、示例Demo源代码下载:

DEMO     SDK彩信接口文档   所有下载

VC、C++彩信接口开发经验及具体开发实现相关推荐

  1. Java彩信接口开发经验及具体开发实现

    一.彩信发送类MdMmsSend(MdMmsSend.java) package mmsdemo; import java.io.*; import java.net.*; import java.s ...

  2. C#彩信接口开发经验及具体开发实现

    一.配置文件app.config <?xml version="1.0" encoding="utf-8" ?> <configuration ...

  3. PHP彩信接口开发经验及具体开发实现

    一.查询账户余额balance() 参数名称 说明 备注 Sn 软件序列号 格式XXX-XXX-XXX-XXXXX Pwd 密码 md5(sn+password) 32位大写 密文 +表示连接 函数返 ...

  4. ASP彩信接口开发经验及具体开发实现

    一.头部配置调用 <!--#include file="md5.asp"--> <% url="http://sdk3.entinfo.cn:8060/ ...

  5. Java语音SDK接口开发经验及具体开发实现

    一.语音发送类Audio(Audio.java) package Audiosend;import java.io.*; import java.net.*; import java.security ...

  6. Java短信接口开发经验及具体开发实现

    Java.android使用的短信SDK是多线程: http://sdk.entinfo.cn:8061/webservice.asmx 其他编程语言使用的是下面接口,希望注意. http://sdk ...

  7. 从C++起步到MFC实战VC++软件工程师高端培训(服务器端开发方向)学习课程

    从C++起步到MFC实战VC++软件工程师高端培训(服务器端开发方向)学习课程 主要内容: 本部分是您成为VC++软件工程师必备的阶段,如果您没有任何基础,学习C++能快速让您进入编程领域,建议配合书 ...

  8. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

    本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的 ...

  9. 微信JS-SDK签名接口的使用与开发

    最近诸事缠身好久没有写文章了.前不久将与微信公众号有关的一些知识点进行了梳理,微信公众号开发过程中,用最多的就是微信js-sdk了.但是使用微信js-sdk需要获取签名.时间戳.随机字符串,等等一系列 ...

最新文章

  1. winscp开启ftp_如何使用winscp,如何使用winscp连接FTP
  2. WP7基础---补充
  3. flowable对比
  4. 程序员面试题精选100题(13)-第一个只出现一次的字符[算法]
  5. 总结一下模型工程化部署的几种方式
  6. c语言如何将程序保存在文件,急求如何将下列C语言程序数据存储到文件中?
  7. DOM 事件深入浅出(一)
  8. python---之getattr
  9. OpenCV3.4.13+OpenCV_contrib 双摄像头实时拼接 环境配置
  10. 如何更换tomcat版本
  11. 安卓6.0获取相机权限
  12. 金税盘没有及时清卡怎么办
  13. ssb门限_判断(2分) 由于DSB信号的调制制度增益是SSB的两倍,所以抗噪声性能比SSB好一倍...
  14. CSS3实现5个常用的网页动画效果
  15. java面向对象笔记
  16. 哈夫曼树和哈夫曼编码
  17. 计算机心得1500字,计算机生产实习报告心得体会1500字
  18. 了解CI/CD流水线
  19. 服务器内存UDIMM与RDIMM区别
  20. 关于Python的面向对象

热门文章

  1. TG测出来的失重百分比为什么是负的?为什么会出现杂峰?(一)
  2. 笔记本电脑联系Y430,声卡驱动Conexant HD SmartAudio是不是杯具不能混音_完美解决办法...
  3. 怒飞垂云视频教程 一、建立编译环境
  4. AJDK 8.0.0 Release Notes
  5. MongoDB 1.4 Release Notes
  6. oracle drop user失败,升级失败后,在drop user时出现错误ORA-00600 kkpo_rcinfo_defstg:objnotfound...
  7. 【工具类】如何查找PCT专利的授权情况
  8. 第14章 Salesforce标准对象
  9. 抖音情感类账号,情感类抖音账号简介
  10. “三代产品经理的职业体验”,顺便聊聊播客