发送验证码

controller

 1   /**
 2      * 发送短信验证码
 3      * @param phoneNumber
 4      * @return
 5      * @throws Exception
 6      */
 7     @GetMapping(value = "sendSmsCode")
 8     public Object sendSmsCode(String phoneNumber,HttpServletRequest request) throws Exception{
 9         if(StringUtils.isEmpty(phoneNumber)){
10             return RestResponse.buildError(ReturnCode.parame_is_null);
11         }
12         if(!phoneNumber.matches(ConstantUtil.REGEX_MOBILE)){
13             return RestResponse.buildError(ReturnCode.pLength_is_error);
14         }
15         String source = request.getHeader("source");
16         //获取验证码
17         String smsCode = CodeUtil.getSmsCode();
18         log.info("短信验证码:"+smsCode);
19         //存储验证码
20         GuavaCacheUtil.GLOBAL_CACHE_SMS_CODE.put(ConstantUtil.appendStr(ConstantUtil.sms_code_pre,phoneNumber,source),smsCode);
21         //存获取验证码的次数
22         String result = commonService.sendSmsCode(phoneNumber,String.format(MyTokenCache.smsTempMap.get(ConstantUtil.sms_context).toString(),smsCode));
23         if(StringUtils.isEmpty(result)){
24             return RestResponse.buildError(ReturnCode.sms_code_send_fail);
25         }else {
26             Map jsonMap = JsonUtils.string2Obj(result,Map.class);
27             String status = jsonMap.get("ReturnStatus").toString();
28             if(status.equals("Success")){
29                 return RestResponse.buildSuccess();
30             }else {
31                 return RestResponse.buildError(ReturnCode.sms_code_send_fail);
32             }
33         }
34     }

impl

 1 public String sendSmsCode(String phoneNumber, String context) throws Exception {
 2         //调用短信接口
 3         String method = "POST";
 4         Map<String, String> headers = new HashMap<String, String>();
 5         //最后在header中的格式(中间是英文空格)为Authorization:APPCODE xxx
 6         headers.put("Authorization", "APPCODE " + app_code);
 7         Map<String, String> querys = new HashMap<String, String>();
 8         //测试可用默认短信模板,测试模板为专用模板不可修改,如需自定义短信内容或改动任意字符,请联系旺旺或QQ726980650进行申请
 9         querys.put("content", context);
10         querys.put("mobile", phoneNumber);
11         Map<String, String> bodys = new HashMap<String, String>();
12         HttpResponse response = HttpUtil.doPost(sms_code_url, method, headers, querys, bodys);
13         String result = EntityUtils.toString(response.getEntity());
14         if (result.equals("")) {
15             log.error(response.toString());
16             if (StringUtils.isEmpty(result)) {
17                 log.error("验证短信发送次数已经用完,请联系管理员购买");
18             }
19         } else {
20             log.info(result);
21         }
22         return result;
23     }
HttpUtil 
  1 package com.zdkj.umt.util.http;
  2 
  3 
  4 import com.aliyun.oss.common.utils.StringUtils;
  5 import org.apache.http.HttpResponse;
  6 import org.apache.http.NameValuePair;
  7 import org.apache.http.client.HttpClient;
  8 import org.apache.http.client.entity.UrlEncodedFormEntity;
  9 import org.apache.http.client.methods.HttpDelete;
 10 import org.apache.http.client.methods.HttpGet;
 11 import org.apache.http.client.methods.HttpPost;
 12 import org.apache.http.client.methods.HttpPut;
 13 import org.apache.http.conn.ClientConnectionManager;
 14 import org.apache.http.conn.scheme.Scheme;
 15 import org.apache.http.conn.scheme.SchemeRegistry;
 16 import org.apache.http.conn.ssl.SSLSocketFactory;
 17 import org.apache.http.entity.ByteArrayEntity;
 18 import org.apache.http.entity.StringEntity;
 19 import org.apache.http.impl.client.DefaultHttpClient;
 20 import org.apache.http.message.BasicNameValuePair;
 21 
 22 import javax.net.ssl.SSLContext;
 23 import javax.net.ssl.TrustManager;
 24 import javax.net.ssl.X509TrustManager;
 25 import java.io.UnsupportedEncodingException;
 26 import java.net.URLEncoder;
 27 import java.security.KeyManagementException;
 28 import java.security.NoSuchAlgorithmException;
 29 import java.security.cert.X509Certificate;
 30 import java.util.ArrayList;
 31 import java.util.List;
 32 import java.util.Map;
 33 
 34 /**
 35  * @author liuyanjun
 36  */
 37 public class HttpUtil {
 38 
 39     /**
 40      * get
 41      *
 42      * @param host
 43      * @param path
 44      * @param method
 45      * @param headers
 46      * @param querys
 47      * @return
 48      * @throws Exception
 49      */
 50     public static HttpResponse doGet(String host, String method,
 51                                      Map<String, String> headers,
 52                                      Map<String, String> querys)
 53             throws Exception {
 54         HttpClient httpClient = wrapClient(host);
 55 
 56         HttpGet request = new HttpGet(buildUrl(host, querys));
 57         for (Map.Entry<String, String> e : headers.entrySet()) {
 58             request.addHeader(e.getKey(), e.getValue());
 59         }
 60 
 61         return httpClient.execute(request);
 62     }
 63 
 64     /**
 65      * post form
 66      *
 67      * @param host
 68      * @param method
 69      * @param headers
 70      * @param querys
 71      * @param bodys
 72      * @return
 73      * @throws Exception
 74      */
 75     public static HttpResponse doPost(String host, String method,
 76                                       Map<String, String> headers,
 77                                       Map<String, String> querys,
 78                                       Map<String, String> bodys)
 79             throws Exception {
 80         HttpClient httpClient = wrapClient(host);
 81 
 82         HttpPost request = new HttpPost(buildUrl(host, querys));
 83         for (Map.Entry<String, String> e : headers.entrySet()) {
 84             request.addHeader(e.getKey(), e.getValue());
 85         }
 86 
 87         if (bodys != null) {
 88             List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
 89 
 90             for (String key : bodys.keySet()) {
 91                 nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
 92             }
 93             UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
 94             formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
 95             request.setEntity(formEntity);
 96         }
 97 
 98         return httpClient.execute(request);
 99     }
100 
101     /**
102      * Post String
103      *
104      * @param host
105      * @param path
106      * @param method
107      * @param headers
108      * @param querys
109      * @param body
110      * @return
111      * @throws Exception
112      */
113     public static HttpResponse doPost(String host,  String method,
114                                       Map<String, String> headers,
115                                       Map<String, String> querys,
116                                       String body)
117             throws Exception {
118         HttpClient httpClient = wrapClient(host);
119 
120         HttpPost request = new HttpPost(buildUrl(host, querys));
121         for (Map.Entry<String, String> e : headers.entrySet()) {
122             request.addHeader(e.getKey(), e.getValue());
123         }
124 
125         if (!StringUtils.isNullOrEmpty(body)) {
126             request.setEntity(new StringEntity(body, "utf-8"));
127         }
128 
129         return httpClient.execute(request);
130     }
131 
132     /**
133      * Post stream
134      *
135      * @param host
136      * @param path
137      * @param method
138      * @param headers
139      * @param querys
140      * @param body
141      * @return
142      * @throws Exception
143      */
144     public static HttpResponse doPost(String host,String method,
145                                       Map<String, String> headers,
146                                       Map<String, String> querys,
147                                       byte[] body)
148             throws Exception {
149         HttpClient httpClient = wrapClient(host);
150 
151         HttpPost request = new HttpPost(buildUrl(host, querys));
152         for (Map.Entry<String, String> e : headers.entrySet()) {
153             request.addHeader(e.getKey(), e.getValue());
154         }
155 
156         if (body != null) {
157             request.setEntity(new ByteArrayEntity(body));
158         }
159 
160         return httpClient.execute(request);
161     }
162 
163     /**
164      * Put String
165      * @param host
166      * @param path
167      * @param method
168      * @param headers
169      * @param querys
170      * @param body
171      * @return
172      * @throws Exception
173      */
174     public static HttpResponse doPut(String host,  String method,
175                                      Map<String, String> headers,
176                                      Map<String, String> querys,
177                                      String body)
178             throws Exception {
179         HttpClient httpClient = wrapClient(host);
180 
181         HttpPut request = new HttpPut(buildUrl(host, querys));
182         for (Map.Entry<String, String> e : headers.entrySet()) {
183             request.addHeader(e.getKey(), e.getValue());
184         }
185 
186         if (!StringUtils.isNullOrEmpty(body)) {
187             request.setEntity(new StringEntity(body, "utf-8"));
188         }
189 
190         return httpClient.execute(request);
191     }
192 
193     /**
194      * Put stream
195      * @param host
196      * @param path
197      * @param method
198      * @param headers
199      * @param querys
200      * @param body
201      * @return
202      * @throws Exception
203      */
204     public static HttpResponse doPut(String host,  String method,
205                                      Map<String, String> headers,
206                                      Map<String, String> querys,
207                                      byte[] body)
208             throws Exception {
209         HttpClient httpClient = wrapClient(host);
210 
211         HttpPut request = new HttpPut(buildUrl(host, querys));
212         for (Map.Entry<String, String> e : headers.entrySet()) {
213             request.addHeader(e.getKey(), e.getValue());
214         }
215 
216         if (body != null) {
217             request.setEntity(new ByteArrayEntity(body));
218         }
219 
220         return httpClient.execute(request);
221     }
222 
223     /**
224      * Delete
225      *
226      * @param host
227      * @param path
228      * @param method
229      * @param headers
230      * @param querys
231      * @return
232      * @throws Exception
233      */
234     public static HttpResponse doDelete(String host, String path, String method,
235                                         Map<String, String> headers,
236                                         Map<String, String> querys)
237             throws Exception {
238         HttpClient httpClient = wrapClient(host);
239 
240         HttpDelete request = new HttpDelete(buildUrl(host, querys));
241         for (Map.Entry<String, String> e : headers.entrySet()) {
242             request.addHeader(e.getKey(), e.getValue());
243         }
244 
245         return httpClient.execute(request);
246     }
247 
248     private static String buildUrl(String host, Map<String, String> querys) throws UnsupportedEncodingException {
249         StringBuilder sbUrl = new StringBuilder();
250         sbUrl.append(host);
251         if (null != querys) {
252             StringBuilder sbQuery = new StringBuilder();
253             for (Map.Entry<String, String> query : querys.entrySet()) {
254                 if (0 < sbQuery.length()) {
255                     sbQuery.append("&");
256                 }
257                 if (StringUtils.isNullOrEmpty(query.getKey()) && !StringUtils.isNullOrEmpty(query.getValue())) {
258                     sbQuery.append(query.getValue());
259                 }
260                 if (!StringUtils.isNullOrEmpty(query.getKey())) {
261                     sbQuery.append(query.getKey());
262                     if (!StringUtils.isNullOrEmpty(query.getValue())) {
263                         sbQuery.append("=");
264                         sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
265                     }
266                 }
267             }
268             if (0 < sbQuery.length()) {
269                 sbUrl.append("?").append(sbQuery);
270             }
271         }
272 
273         return sbUrl.toString();
274     }
275 
276     private static HttpClient wrapClient(String host) {
277         HttpClient httpClient = new DefaultHttpClient();
278         if (host.startsWith("https://")) {
279             sslClient(httpClient);
280         }
281 
282         return httpClient;
283     }
284 
285     private static void sslClient(HttpClient httpClient) {
286         try {
287             SSLContext ctx = SSLContext.getInstance("TLS");
288             X509TrustManager tm = new X509TrustManager() {
289                 public X509Certificate[] getAcceptedIssuers() {
290                     return null;
291                 }
292                 public void checkClientTrusted(X509Certificate[] xcs, String str) {
293 
294                 }
295                 public void checkServerTrusted(X509Certificate[] xcs, String str) {
296 
297                 }
298             };
299             ctx.init(null, new TrustManager[] { tm }, null);
300             SSLSocketFactory ssf = new SSLSocketFactory(ctx);
301             ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
302             ClientConnectionManager ccm = httpClient.getConnectionManager();
303             SchemeRegistry registry = ccm.getSchemeRegistry();
304             registry.register(new Scheme("https", 443, ssf));
305         } catch (KeyManagementException ex) {
306             throw new RuntimeException(ex);
307         } catch (NoSuchAlgorithmException ex) {
308             throw new RuntimeException(ex);
309         }
310     }
311 }
原文地址:https://www.cnblogs.com/huanglp/p/12901710.html