Qt & Java 实现短信群发功能 从搭建环境到功能实现

发布时间:2019-11-18 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Qt & Java 实现短信群发功能 从搭建环境到功能实现脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

首先声明 没有博主的允许不得转载

这个功能是我做windows项目其中的一部分功能,感觉Qt短信群发功能在网上用例比较少,需求的人也很多,故而写下此技博客希望Qt开发的人员有所帮助。
Qt在实现短信群发功能有诸多不便,所以发短信的主要功能是在Java中完成,相信大多数人都认为,我可能使用的QAndROIdJniObject实现,但是很遗憾Qt提供的这项技术只能用在Qt for Android中,所以我使用QPRocess实现执行批处理文件达到运行java程序的目的。虽然这种方法可能很low,但是解决了我在项目中开发此功能的难题,好了闲话少说,我们直奔主题。
我所用的开发环境:

 1.windows 7  2.qt-oPEnsource-windows-x86-mingw491_opengl-5.4.1.exe  3.MS Access 2007 + Access驱动  4.JDK1.8 

环境配置我主要说明一下Qt链接Access需要做的工作,你可能在实现的时候没有遇到这么多问题,那么你可以直接略过,首先去微软官网下载Access的驱动,Office套件中不带着驱动,安装后,具体设置如下:系统控制面板-->系统和功能-->管理工具,在其中设置数据配置项,可以直接使用当前用户默认的MS Access Database,在其中选择你的数据库文件,最好是.mdb为后缀Access的文件,保存你的选择,以下是数据库链接实例代码:

 QSQLDatabase db = QSqlDatabase::addDatabase("QODBC");  db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access Database};DBQ=C:/Users/Mrzhang/Database2.mdb"); //路径换成你自己的      bool b = db.open();      if(b){      //你要执行的语句      }      else{      //打印输出提示错误      }  

实现从数据库中读取数据的时候,就要去实现发短信的功能了,发短信是避不开运营商的,所以不要妄想自己程序完全实现,除非你会自己搭建伪基站,这里使用的发短信的接口是sms提供的java发短信的接口(详细信息见官网:http://sms.webchinese.com.cn/...,你会发现Java实现发短信竟然如此简单,那接下来我们来解决Qt调用java的问题,在你的脑上装有JDk环境的条件下,你可以测试一下,这段代码(执行你的java代码,并抽取java的控制台输出信息,当然不仅仅是java代码,其他的皆可,只要你尝试):

QProcess p(0); p.start("cmd", QStringList()<<"/c"<<"java MyHelloWord");//你需要把你的可执行文件放到项目运行目录下 p.waitForStarted(); p.waITForFinished(); QString strTemp=QString::FromLocal8Bit(p.readAllStandardOutput()); QMessageBox testMassage; testMassage.setText(strTemp); testMassage.exec(); 

在这里值得一提的是sms提供的接口需要导入第三方jar包,jar包下载地址,官网已经提供这里不再列出,这三个包最好也放到Qt目录,如果你有自己的想法那么尽情去测试,如果你测试用Qt调用你自己的java程序成功后,那么就到了编译官方提供的程序实例了,eclipse下编译比较简单,这里在说一下在命令行中如何编译依赖第三方jar包的程序:

Qt & Java 实现短信群发功能 从搭建环境到功能实现


以这样的方式把所有的jar包导入然后直接编译java程序,这里有必要再说一下,运营商提供的第三方jar包不仅在编译的时候需要在运行的时候也是需要的,所以在bat文件中应该这么写:

echo off set FILE_HOME=C:Qtfilebuild-untitled-Desktop_Qt_5_4_1_MinGW_32bit-Debugtest  //这个目录要改成你自己的 set CLASS_PATH=.;%FILE_HOME%/commons-LOGging-1.1.1.jar;%FILE_HOME%/commons-codec-1.4.jar;%FILE_HOME%/commons-httpclient-3.1.jar java -cp %CLASS_PATH% -Dcatalina.home="%FILE_HOME%" Maintest2 

然后 Qt代码这样写:

 p.start("cmd", QStringList()<<"/c"<<"test.bat"); 

在这里你可以看见我放jar包的位置,为了少出错你最好效仿我,好了这里已经能运行SMS java程序了,接下来讨论一下我实现Qt和Java传递数据的方法,Qt创建临时文件并写入电话和要发送的信息,java从中读取信息,最好用缓冲流读取

   BufferedReader bd = new BufferedReader(new InputStreamReader(new FileinputStream("你的文件名称")));

用readLine方法读取,简单粗暴,只需要少量的字符串处理你就可以往接口中传入数据了。
到此完美解决Qt桌面平台调用Java程序完成核心功能。

脚本宝典总结

以上是脚本宝典为你收集整理的Qt & Java 实现短信群发功能 从搭建环境到功能实现全部内容,希望文章能够帮你解决Qt & Java 实现短信群发功能 从搭建环境到功能实现所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。