JAVA实现短信群发的步骤:
1、使用第三方短信平台服务商,接入短信服务;
2、调用短信提交页面发送请求;
3、服务器向第三方短信平台提交发送请求;
4、短信平台通过运营商将短信下发至用户的手机上。
以下是秒赛短信平台JAVA短信验证码接口代码示例
package test
import java.io.IOException
import java.io.UnsupportedEncodingException
import java.net.URISyntaxException
import java.net.URLEncoder
import org.apache.commons.httpclient.HttpClient
import org.apache.commons.httpclient.NameValuePair
import org.apache.commons.httpclient.methods.PostMethod
import org.apache.commons.lang3.StringUtils
public class Apis {
// 短信发送接口的http地址,请咨询客服
private static String url = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”
// 编码格式。发送编码格式统一用UTF-8
private static String ENCODING = “UTF-8”
public static void main(String[] args) throws IOException, URISyntaxException {
// 账号
String account = “************************”
// 密码
String pswd = “************************”
// 修改为您要发送的手机号,多个用,分割
String mobile = “13*********”
// 设置您要发送的内容
String msg = “【秒赛科技】您的验证码是:1234”
// 发短信调用示例
System.out.println(Apis.send(account,pswd, mobile, msg));
}
/**
* 发送短信
*
* @param account
* account
* @param pswd
* pswd
* @param mobile
* 手机号码
* @param content
* 短信发送内容
*/
public static String send(String account,String pswd, String mobile, String msg) {
NameValuePair[] data = { new NameValuePair(“account”, account),
new NameValuePair(“pswd”, pswd),
new NameValuePair(“mobile”, mobile),
new NameValuePair(“msg”, msg),
new NameValuePair(“needstatus”, “true”),
new NameValuePair(“product”, “”) }
return doPost(url, data);
}
/**
* 基于HttpClient的post函数
* PH
* @param url
* 提交的URL
*
* @param data
* 提交NameValuePair参数
* @return 提交响应
*/
private static String doPost(String url, NameValuePair[] data) {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
// method.setRequestHeader(“ContentType”,
// “application/x-www-form-urlencodedcharset=UTF-8”);
method.setRequestBody(data);
// client.getParams()。setContentCharset(“UTF-8”);
client.getParams()。setConnectionManagerTimeout(10000);
try {
client.executeMethod(method);
return method.getResponseBodyAsString();
} catch (Exception e) {
e.printStackTrace();
}
return null
}
}
1步.首先主服务器在阻塞等待客户端连接2步.当有连接来的时候就分配给子服务器来和这个socket会话
3步.保存每个客户端的socket对象,比如存在一个链表onlineList<Socket>中,
///////////////////////////////////
主服务器类
onlineList= Collections.synchronizedList(new LinkedList<Socket>())//创建一个用于存放在线用户的socket对象的表
while()
{
Socket client_socket = server.accept() //1步
subServer new_sub = new subServer(client_socket)//2步
onlineList.add(client_socket)//3步
}
然后当要群发就可以在主服务器执行下面的方法
///////////////////////////
主服务器类的群发方法
BufferedWriter writer
String content = "要发送的内容"
for(Socket target: onlineList) //从列表中找出
{
writer = new BufferedWriter(new OutputStreamWriter(target.getOutputStream())) //循环对每个socket对象使用getOutputStream
writer.write(content)//发送出去
writer.flush() //清空刷缓冲区
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)