200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Java接入乐讯通paas短信平台 调用api实现短信验证码的发送

Java接入乐讯通paas短信平台 调用api实现短信验证码的发送

时间:2022-10-24 12:46:30

相关推荐

Java接入乐讯通paas短信平台 调用api实现短信验证码的发送

首先,我们进入我所安利的短信平台---->乐讯通PaaS平台 ()

然后进行注册,产品选择增值短信

登录之后,点击左边文字短信

一般用于个人开发或者企业开发仅仅是为了验证码,便可以申请一个自定义签名和自定义模板,点开便知道怎么申请,着急申请的话就找到客服让他帮你审核

在这里我提醒大家,要进行企业认证或者个人实名认证,短信平台才能真正开户,要不然只能为测试用户。

然后就是我们的api接口制作,大家可以看官方文档指定自己的工具类,我这里是自己搞了一个短信工具类

加上这段依赖

<!-- 调API通信--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>

1.通信工具类

package com.sk.utils;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.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.utils.URIBuilder;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 org.ponent;import java.io.IOException;import .URI;import java.util.ArrayList;import java.util.List;import java.util.Map;@Componentpublic class HttpClientUtil {public static String doGet(String url, Map<String, String> param) {// 建立Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 建立uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 建立http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);System.out.println(httpclient);System.out.println(response);System.out.println(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}public static String doPost(String url, Map<String, String> param) {// 建立Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 建立Http Post请求HttpPost httpPost = new HttpPost(url);// 建立参数列表if (param != null) {List<NameValuePair> paramList = new ArrayList<>();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);httpPost.setEntity(entity);}// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "UTF-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return resultString;}public static String doPost(String url) {return doPost(url, null);}}

2.参数bean类

import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic class UserData {private String phone;private String code;}

3.参数工具类

package com.sk.utils;import com.sk.pojo.UserData;import org.ponent;import org.springframework.util.DigestUtils;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;@Componentpublic class smsUtils {private static final String ACTION = "sendtemplate";//定值private static final String USER_NAME = "";//账号private static final String PASSWORD = "";//密码private static final String CODE_TOKEN = "";//验证码tokenprivate static final String TEMPLATE_ID = "";//模板id//将密码进行MD5加密public String pwdToMD5(){return DigestUtils.md5DigestAsHex(PASSWORD.getBytes()).toUpperCase();}//拼接短信接收人电话号码和验证码public String getParams(List<UserData> userData){StringBuilder stringBuilder = new StringBuilder();for(UserData data : userData){stringBuilder.append(data.getPhone()).append("|").append(data.getCode()).append("@");}return stringBuilder.substring(0, stringBuilder.toString().length() - 1);}//得到当前时间戳并转为stringpublic String getTimestamp(){return String.valueOf(new Date(System.currentTimeMillis()).getTime());}//得到sign签名public String getSign(){smsUtils smsUtils = new smsUtils();String str = "action=" + ACTION +"&username=" + USER_NAME +"&password=" + smsUtils.pwdToMD5() +"&token=" + CODE_TOKEN +"&timestamp=" + smsUtils.getTimestamp();return DigestUtils.md5DigestAsHex(str.getBytes()).toUpperCase();}//返回mappublic Map<String,String> getParameters(List<UserData> userData){smsUtils smsUtils = new smsUtils();Map<String,String> paramsMap = new HashMap<>();paramsMap.put("action",ACTION);paramsMap.put("username",USER_NAME);paramsMap.put("password",smsUtils.pwdToMD5());paramsMap.put("token",CODE_TOKEN);paramsMap.put("templateid",TEMPLATE_ID);paramsMap.put("param",smsUtils.getParams(userData));paramsMap.put("timestamp",smsUtils.getTimestamp());paramsMap.put("sign",smsUtils.getSign());return paramsMap;}}

4.url及端口全局配置

server:# 端口port: 8186#请求url配置#URL: 填入模板短信接口地址

5.api层

package com.sk.api.controller;import com.sk.pojo.RespBean;import com.sk.pojo.UserData;import com.sk.pojo.utils.HttpClientUtil;import com.sk.pojo.utils.smsUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;import java.util.List;@RestController@RequestMapping("/message")public class MessageController{@Value("${URL}")private String url;private smsUtils smsUtils;@Autowiredpublic void setSmsUtils(smsUtils smsUtils){this.smsUtils = smsUtils;}@RequestMapping(value = "/send/{phone}",method = RequestMethod.POST)public RespBean sendMessage(@PathVariable("phone") String phone){int codeNum = (int) ((Math.random() * 9 + 1) * 100000);List<UserData> userDataList = new ArrayList<>();userDataList.add(new UserData(phone,String.valueOf(codeNum)));String res = HttpClientUtil.doPost(url, smsUtils.getParameters(userDataList));return RespBean.success(res);}}

里面的全局返回结果可以在我的另一个博客进行下载,以上就是我的短信blog啦

将上边这些代码段整合为一个jar包,上传到服务器便可以做成自己的短信api了!

测试结果:

上面的参数工具类,只需要将自己的参数填进去就行!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。