短信对接——一种jdbc链接运用
package sms;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Sms {
public static void main(String[] args) throws Exception {
String SpCode="xxx";
String LoginName="xxx";
String Password="xxx";
String driver="com.mysql.jdbc.Driver"; //1.定义驱动程序名为driver内容为com.mysql.jdbc.Driver
String url="jdbc:mysql://localhost:3306/cxfvp?useUnicode=true&characterEncoding=utf-8";//2.定义url;jdbc是协议;mysql是子协议:表示数据库系统管理名称;localhost:3306是你数据库来源的地址和目标端口
String user="root"; //3.定义用户名,写你想要连接到的用户。
String pass="root"; //4.用户密码。
String querySql="select * from amp_message a where a.type=1 and a.status=1 "; //5.你想要查找的表名。
Class.forName(driver); //6.注册驱动程序,用java.lang包下面的class类里面的Class.froName();方法 此处的driver就是1里面定义的driver,也可以 Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection(url,user,pass);//7.获取数据库连接,使用java.sql里面的DriverManager的getConnectin(String url , String username ,String password )来完成
//括号里面的url,user,pass便是前面定义的2,3,4步骤内容;
Statement stmt=conn.createStatement(); //8.构造一个statement对象来执行sql语句:主要有Statement,PreparedStatement,CallableStatement三种实例来实现
ResultSet rs=stmt.executeQuery(querySql);//9.执行sql并返还结束 ;ResultSet executeQuery(String sqlString):用于返还一个结果集(ResultSet)对象。
while(rs.next()){ //10.遍历结果集
String SerialNumber=rs.getString("id");
String UserNumber=rs.getString("tel");
String MessageContent=rs.getString("content").substring(0,rs.getString("content").length()-10);
System.out.println(MessageContent);
if(UserNumber.length()!=11){
String querySql1="update amp_message a set a.status=99 where a.id='"+SerialNumber+"'";
Statement stmt1 = conn.createStatement();//或者用PreparedStatement方法
stmt1.executeUpdate(querySql1);//执行sql语句
continue;
}else{
int sendnum=rs.getInt("sendnum");
int repeatnum=rs.getInt("repeatnum");
for (int i = sendnum+1; i < repeatnum+1; i++) {
String sr=sendPost("http://api.ums86.com:8888/sms/Api/Send.do", "SpCode="+SpCode+"&LoginName="+LoginName+"&Password="+Password+"&MessageContent="+MessageContent+"&UserNumber="+UserNumber+"&SerialNumber="+SerialNumber+"&ScheduleTime=&f=1 ");
String s=sr.substring(sr.indexOf("result=")+7,sr.indexOf("&description"));
System.out.println(sr);
System.out.println(s);
if(!"0".equals(s)){
String querySql1="update amp_message a set a.sendnum="+i+" where a.id='"+SerialNumber+"'";
Statement stmt1 = conn.createStatement();//或者用PreparedStatement方法
stmt1.executeUpdate(querySql1);//执行sql语句
if(i==repeatnum){
String querySql2="update amp_message a set a.status=99,a.sendnum="+i+" where a.id='"+SerialNumber+"'";
Statement stmt2 = conn.createStatement();//或者用PreparedStatement方法
stmt1.executeUpdate(querySql2);//执行sql语句
}
continue;
}else{
String querySql1="update amp_message a set a.status=3,a.sendnum="+i+" where a.id='"+SerialNumber+"'";
Statement stmt1 = conn.createStatement();//或者用PreparedStatement方法
stmt1.executeUpdate(querySql1);//执行sql语句
break;
}
}
}
}
if(rs !=null){//11.关闭记录集
try{
rs.close();
} catch (SQLException e){
e.printStackTrace();
}
}
if(stmt !=null){//12.关闭声明的对象
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn !=null){//13.关闭连接 (记住一定要先关闭前面的11.12.然后在关闭连接,就像关门一样,先关里面的,最后关最外面的)
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"GBK"));
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
}
短信对接——一种jdbc链接运用的更多相关文章
- Android手机上监听短信的两种方式
Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...
- Android之发送短信的两种方式
SMS涉及的主要类SmsManager 实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员. 公有方法: ArrayList< ...
- (转)Android之发送短信的两种方式
https://www.cnblogs.com/dongweiq/p/4866022.html if(TextUtils.isEmpty(number)||TextUtils.isEmpty(cont ...
- android 发送短信的两种方式,以及接收报告和发送报告
android发送短信,以及接收报告和发送报告 android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下: 一.调起系统发短信功能 ...
- C#&.Net干货分享- 构造SMSWebChineseApi对接第三方短信平台
你们想要的短信对接,要舍得点钱哦.... /// <summary> /// http://sms.webchinese.cn/api.shtml /// </summa ...
- SMS短信PDU编码
目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式.使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信:而PDU模式不仅支持 ...
- iOS开发中打电话发短信等功能的实现
在APP开发中,可能会涉及到打电话.发短信.发邮件等功能.比如说,通常一个产品的"关于"页面,会有开发者的联系方式,理想情况下,当用户点击该电话号码时,能够自动的帮用户拨出去,就涉 ...
- PHP通过串口发短信
随技术进步,短信收发领域按时间先后产生了三种模式:BLOCK MODE,基于AT指令的TEXT MODE,基于AT指令的PDU MODE.其中,TEXT MODE比较简单,多款诺基亚手机均支持此款模式 ...
- 今天工作遇到要发短信(ios)的功能,于是随手记录了一下
ios中发送短信有两种 1.程序外调用系统短信 2.程序内调用系统发短信 第一种比较简单,直接调用url就可以了 oc下的代码为 [[UIApplication sharedApplication] ...
随机推荐
- java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted
java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted 转 https://blog.csdn.net ...
- GitHub代码下载和同步
1.下载git客户端https://git-scm.com/ssh-keygen -C "your@email.address" -t rsa 2. 把下面文件的内容复制到 htt ...
- kafka default partitioner java版本和scala版本的不同
scala import kafka.utils._ class DefaultPartitioner(props: VerifiableProperties = null) extends Part ...
- WPF Win32 API 嵌入Form 窗体
WIn32 API: public class Win32Native { [DllImport("user32.dll", SetLastError = true, CharSe ...
- Oracle CDC (Change Data Capture)更新数据捕获——概述
Change Data Capture能高效识别并捕获数据的插入.修改和删除,使更新数据供个人或应用使用. CDC从oracle 9i开始引入,//TODO 在11G R2之后的版本里将取消支持,被O ...
- Selenium 2自动化测试实战38(整合自动发邮件功能)
整合自动发邮件功能 解决了前面的问题后,现在就可以将自动发邮件功能集成到自动化测试项目中了.下面重新编辑runtest.py文件 #runtest.py #coding:utf-8 from HTML ...
- Scala面向对象02
- k8s创建资源的两种方式(5)
一.创建方式分类: 命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1.用 kubectl 命令直接创建,比如: kubectl run httpd-app --image=reg ...
- 用python做线性规划
scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simplex', ...
- 【Hadoop】Hadoop的数据压缩方式
概述 压缩技术能够有效减少底层存储系统(HDFS)读写字节数.压缩提高了网络带宽和磁盘空间的效率.在Hadoop下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要.在这种情况下 ...