java怎么实现群发短信的功能

java怎么实现群发短信的功能,第1张

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() //清空刷缓冲区

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/479053.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-08
下一篇2023-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存