Java实现短信验证码和国际短信群发功能的示例

2025-05-29 0 89

最近由于公司的业务拓展,需要给国外用户发送国际短信,像西班牙、葡萄牙、意大利这些国家都要发,还有中国的香港、澳门、台湾(港澳台)这些地区也要发,不过现在已经有许多公司提供国际短信的业务了,之前使用过云片的验证码业务,顺便看到他们也有国际短信的业务,并且更重要的是,不需要修改任何代码,只要添加下国际短信模板,就可以直接使用之前的代码继续发送国际短信,简直太方便了。

废话不多说,直接上代码。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235
/**

* Created by bingone on 15/12/16.

*/

import org.apache.http.HttpEntity;

import org.apache.http.NameValuePair;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.CloseableHttpResponse;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import java.io.IOException;

import java.net.URISyntaxException;

import java.net.URLEncoder;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* 短信http接口的java代码调用示例

* 基于Apache HttpClient 4.3

*

* @author songchao

* @since 2015-04-03

*/

public class JavaSmsApi {

//查账户信息的http地址

private static String URI_GET_USER_INFO = "https://sms.yunpian.com/v2/user/get.json";

//智能匹配模板发送接口的http地址

private static String URI_SEND_SMS = "https://sms.yunpian.com/v2/sms/single_send.json";

//模板发送接口的http地址

private static String URI_TPL_SEND_SMS = "https://sms.yunpian.com/v2/sms/tpl_single_send.json";

//发送语音验证码接口的http地址

private static String URI_SEND_VOICE = "https://voice.yunpian.com/v2/voice/send.json";

//绑定主叫、被叫关系的接口http地址

private static String URI_SEND_BIND = "https://call.yunpian.com/v2/call/bind.json";

//解绑主叫、被叫关系的接口http地址

private static String URI_SEND_UNBIND = "https://call.yunpian.com/v2/call/unbind.json";

//编码格式。发送编码格式统一用UTF-8

private static String ENCODING = "UTF-8";

public static void main(String[] args) throws IOException, URISyntaxException {

//修改为您的apikey.apikey可在官网(http://www.yunpian.com)登录后获取

String apikey = "xxxxxxxxxxxxxxxxxxxxx";

//修改为您要发送的手机号

String mobile = "130xxxxxxxx";

/**************** 查账户信息调用示例 *****************/

System.out.println(JavaSmsApi.getUserInfo(apikey));

/**************** 使用智能匹配模板接口发短信(推荐) *****************/

//设置您要发送的内容(内容必须和某个模板匹配。以下例子匹配的是系统提供的1号模板)

String text = "【云片网】您的验证码是1234";

//发短信调用示例

// System.out.println(JavaSmsApi.sendSms(apikey, text, mobile));

/**************** 使用指定模板接口发短信(不推荐,建议使用智能匹配模板接口) *****************/

//设置模板ID,如使用1号模板:【#company#】您的验证码是#code#

long tpl_id = 1;

//设置对应的模板变量值

String tpl_value = URLEncoder.encode("#code#",ENCODING) +"="

+ URLEncoder.encode("1234", ENCODING) + "&"

+ URLEncoder.encode("#company#",ENCODING) + "="

+ URLEncoder.encode("云片网",ENCODING);

//模板发送的调用示例

System.out.println(tpl_value);

System.out.println(JavaSmsApi.tplSendSms(apikey, tpl_id, tpl_value, mobile));

/**************** 使用接口发语音验证码 *****************/

String code = "1234";

//System.out.println(JavaSmsApi.sendVoice(apikey, mobile ,code));

/**************** 使用接口绑定主被叫号码 *****************/

String from = "+86130xxxxxxxx";

String to = "+86131xxxxxxxx";

Integer duration = 30*60;// 绑定30分钟

// System.out.println(JavaSmsApi.bindCall(apikey, from ,to , duration));

/**************** 使用接口解绑主被叫号码 *****************/

// System.out.println(JavaSmsApi.unbindCall(apikey, from, to));

}

/**

* 取账户信息

*

* @return json格式字符串

* @throws java.io.IOException

*/

public static String getUserInfo(String apikey) throws IOException, URISyntaxException {

Map<String, String> params = new HashMap<String, String>();

params.put("apikey", apikey);

return post(URI_GET_USER_INFO, params);

}

/**

* 智能匹配模板接口发短信

*

* @param apikey apikey

* @param text  短信内容

* @param mobile  接受的手机号

* @return json格式字符串

* @throws IOException

*/

public static String sendSms(String apikey, String text, String mobile) throws IOException {

Map<String, String> params = new HashMap<String, String>();

params.put("apikey", apikey);

params.put("text", text);

params.put("mobile", mobile);

return post(URI_SEND_SMS, params);

}

/**

* 通过模板发送短信(不推荐)

*

* @param apikey apikey

* @param tpl_id  模板id

* @param tpl_value  模板变量值

* @param mobile  接受的手机号

* @return json格式字符串

* @throws IOException

*/

public static String tplSendSms(String apikey, long tpl_id, String tpl_value, String mobile) throws IOException {

Map<String, String> params = new HashMap<String, String>();

params.put("apikey", apikey);

params.put("tpl_id", String.valueOf(tpl_id));

params.put("tpl_value", tpl_value);

params.put("mobile", mobile);

return post(URI_TPL_SEND_SMS, params);

}

/**

* 通过接口发送语音验证码

* @param apikey apikey

* @param mobile 接收的手机号

* @param code 验证码

* @return

*/

public static String sendVoice(String apikey, String mobile, String code) {

Map<String, String> params = new HashMap<String, String>();

params.put("apikey", apikey);

params.put("mobile", mobile);

params.put("code", code);

return post(URI_SEND_VOICE, params);

}

/**

* 通过接口绑定主被叫号码

* @param apikey apikey

* @param from 主叫

* @param to 被叫

* @param duration 有效时长,单位:秒

* @return

*/

public static String bindCall(String apikey, String from, String to , Integer duration ) {

Map<String, String> params = new HashMap<String, String>();

params.put("apikey", apikey);

params.put("from", from);

params.put("to", to);

params.put("duration", String.valueOf(duration));

return post(URI_SEND_BIND, params);

}

/**

* 通过接口解绑绑定主被叫号码

* @param apikey apikey

* @param from 主叫

* @param to 被叫

* @return

*/

public static String unbindCall(String apikey, String from, String to) {

Map<String, String> params = new HashMap<String, String>();

params.put("apikey", apikey);

params.put("from", from);

params.put("to", to);

return post(URI_SEND_UNBIND, params);

}

/**

* 基于HttpClient 4.3的通用POST方法

*

* @param url 提交的URL

* @param paramsMap 提交<参数,值>Map

* @return 提交响应

*/

public static String post(String url, Map<String, String> paramsMap) {

CloseableHttpClient client = HttpClients.createDefault();

String responseText = "";

CloseableHttpResponse response = null;

try {

HttpPost method = new HttpPost(url);

if (paramsMap != null) {

List<NameValuePair> paramList = new ArrayList<NameValuePair>();

for (Map.Entry<String, String> param : paramsMap.entrySet()) {

NameValuePair pair = new BasicNameValuePair(param.getKey(), param.getValue());

paramList.add(pair);

}

method.setEntity(new UrlEncodedFormEntity(paramList, ENCODING));

}

response = client.execute(method);

HttpEntity entity = response.getEntity();

if (entity != null) {

responseText = EntityUtils.toString(entity, ENCODING);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

response.close();

} catch (Exception e) {

e.printStackTrace();

}

}

return responseText;

}

}

代码看上去有点乱了,不过我们用到的API接口也就那么几个,具体的可以看这篇文章如何使用云片API发送短信验证码,只要把那三个接口搞定了,无论是国际短信、国内短信还是短信验证码、手机验证码,都可以轻松搞定,so easy!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.jianshu.com/p/59bcca9692c3

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java实现短信验证码和国际短信群发功能的示例 https://www.kuaiidc.com/118847.html

相关文章

发表评论
暂无评论