最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java实现短信验证码和国际短信群发功能的示例
时间:2017-03-21 编辑:简简单单 来源:一聚教程网
最近由于公司的业务拓展,需要给国外用户发送国际短信,像西班牙、葡萄牙、意大利这些国家都要发,还有中国的香港、澳门、台湾(港澳台)这些地区也要发,不过现在已经有许多公司提供国际短信的业务了,之前使用过云片的验证码业务,顺便看到他们也有国际短信的业务,并且更重要的是,不需要修改任何代码,只要添加下国际短信模板,就可以直接使用之前的代码继续发送国际短信,简直太方便了。
废话不多说,直接上代码。
代码如下 | 复制代码 |
/** * Created by bingone on 15/12/16. */
importorg.apache.http.HttpEntity; importorg.apache.http.NameValuePair; importorg.apache.http.client.entity.UrlEncodedFormEntity; importorg.apache.http.client.methods.CloseableHttpResponse; importorg.apache.http.client.methods.HttpPost; importorg.apache.http.impl.client.CloseableHttpClient; importorg.apache.http.impl.client.HttpClients; importorg.apache.http.message.BasicNameValuePair; importorg.apache.http.util.EntityUtils; importjava.io.IOException; importjava.net.URISyntaxException; importjava.net.URLEncoder; importjava.util.ArrayList; importjava.util.HashMap; importjava.util.List; importjava.util.Map;
/** * 短信http接口的java代码调用示例 * 基于Apache HttpClient 4.3 * * @author songchao * @since 2015-04-03 */
publicclassJavaSmsApi {
//查账户信息的http地址 privatestaticString URI_GET_USER_INFO ="https://sms.yunpian.com/v2/user/get.json";
//智能匹配模板发送接口的http地址 privatestaticString URI_SEND_SMS ="https://sms.yunpian.com/v2/sms/single_send.json";
//模板发送接口的http地址 privatestaticString URI_TPL_SEND_SMS ="https://sms.yunpian.com/v2/sms/tpl_single_send.json";
//发送语音验证码接口的http地址 privatestaticString URI_SEND_VOICE ="https://voice.yunpian.com/v2/voice/send.json";
//绑定主叫、被叫关系的接口http地址 privatestaticString URI_SEND_BIND ="https://call.yunpian.com/v2/call/bind.json";
//解绑主叫、被叫关系的接口http地址 privatestaticString URI_SEND_UNBIND ="https://call.yunpian.com/v2/call/unbind.json";
//编码格式。发送编码格式统一用UTF-8 privatestaticString ENCODING ="UTF-8";
publicstaticvoidmain(String[] args)throwsIOException, 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# longtpl_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 */
publicstaticString getUserInfo(String apikey)throwsIOException, URISyntaxException { Map params.put("apikey", apikey); returnpost(URI_GET_USER_INFO, params); }
/** * 智能匹配模板接口发短信 * * @param apikey apikey * @param text 短信内容 * @param mobile 接受的手机号 * @return json格式字符串 * @throws IOException */
publicstaticString sendSms(String apikey, String text, String mobile)throwsIOException { Map params.put("apikey", apikey); params.put("text", text); params.put("mobile", mobile); returnpost(URI_SEND_SMS, params); }
/** * 通过模板发送短信(不推荐) * * @param apikey apikey * @param tpl_id 模板id * @param tpl_value 模板变量值 * @param mobile 接受的手机号 * @return json格式字符串 * @throws IOException */
publicstaticString tplSendSms(String apikey,longtpl_id, String tpl_value, String mobile)throwsIOException { Map params.put("apikey", apikey); params.put("tpl_id", String.valueOf(tpl_id)); params.put("tpl_value", tpl_value); params.put("mobile", mobile); returnpost(URI_TPL_SEND_SMS, params); }
/** * 通过接口发送语音验证码 * @param apikey apikey * @param mobile 接收的手机号 * @param code 验证码 * @return */
publicstaticString sendVoice(String apikey, String mobile, String code) { Map params.put("apikey", apikey); params.put("mobile", mobile); params.put("code", code); returnpost(URI_SEND_VOICE, params); }
/** * 通过接口绑定主被叫号码 * @param apikey apikey * @param from 主叫 * @param to 被叫 * @param duration 有效时长,单位:秒 * @return */
publicstaticString bindCall(String apikey, String from, String to , Integer duration ) { Map params.put("apikey", apikey); params.put("from", from); params.put("to", to); params.put("duration", String.valueOf(duration)); returnpost(URI_SEND_BIND, params); }
/** * 通过接口解绑绑定主被叫号码 * @param apikey apikey * @param from 主叫 * @param to 被叫 * @return */ publicstaticString unbindCall(String apikey, String from, String to) { Map params.put("apikey", apikey); params.put("from", from); params.put("to", to); returnpost(URI_SEND_UNBIND, params); }
/** * 基于HttpClient 4.3的通用POST方法 * * @param url 提交的URL * @param paramsMap 提交<参数,值>Map * @return 提交响应 */
publicstaticString post(String url, Map CloseableHttpClient client = HttpClients.createDefault(); String responseText =""; CloseableHttpResponse response =null; try{ HttpPost method =newHttpPost(url); if(paramsMap !=null) { List for(Map.Entry NameValuePair pair =newBasicNameValuePair(param.getKey(), param.getValue()); paramList.add(pair); } method.setEntity(newUrlEncodedFormEntity(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(); } } returnresponseText; } } |
代码看上去有点乱了,不过我们用到的API接口也就那么几个,具体的可以看这篇文章如何使用云片API发送短信验证码,只要把那三个接口搞定了,无论是国际短信、国内短信还是短信验证码、手机验证码,都可以轻松搞定,so easy!
相关文章
- 一加5首发开卖验证码疯狂错误 网友 果然有惊喜 06-22
- 猫眼电影取票码在哪 猫眼电影APP验证码查看教程 03-25
- 平安好车主收不到验证码?平安好车主为什么打不开 02-28
- 交管12123收不到验证码怎么办 交管12123收不到短信解决方法 01-03
- 离线盒子总是提示验证码错误怎么办 离线盒子验证码错误解决方法 12-15
- 摩拜单车APP收不到短信验证码解决教程 10-22