package com.cweb.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.hai.model.MtSmsMessageModel; import com.hai.model.ResponseData; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.URL; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; @Controller @Api(value = "华为云短信发送") @RequestMapping(value = "/test") public class testController { /** * 设置不验证主机 */ private static final HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }; @RequestMapping(value = "/sendSmsCode", method = RequestMethod.GET) @ApiOperation(value = "发送短信验证码") @ResponseBody public String sendSmsCode(@RequestParam(value = "phone", required = true) String phone) throws Exception { // ip:port根据实际情况填写 String url = "https://139.9.32.119:18312/common/sms/sendTemplateMessage"; String msisdn = "18090580471"; String smsTemplateId = "SMS_21092300061"; Map templateParas = new HashMap(); templateParas.put("code", "123456"); String account = "760887"; //实际账号 String password = "Z.o'&mO%7_?5M,Br"; //实际密码 // If the request body does not contain the signature name, set signature to null. Map body = buildRequestBody(msisdn, smsTemplateId, templateParas, account, password); if (null == body || body.isEmpty()) { System.out.println("body is null."); return ""; } HttpsURLConnection connection = null; InputStream is = null; BufferedReader br = null; trustAllHttpsCertificates(); try { URL realUrl = new URL(url); connection = (HttpsURLConnection) realUrl.openConnection(); connection.setHostnameVerifier(DO_NOT_VERIFY); connection.setDoInput(true); // 设置可输入 connection.setDoOutput(true); // 设置该连接是可以输出的 connection.setRequestMethod("POST"); // 设置请求方式 connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); // connection.connect(); ObjectMapper objectMapper = new ObjectMapper(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8")); pw.write(objectMapper.writeValueAsString(body)); pw.flush(); pw.close(); br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); int status = connection.getResponseCode(); if (200 == status) { // 200 is = connection.getInputStream(); } else { // 400/401 is = connection.getErrorStream(); } br = new BufferedReader(new InputStreamReader(is, "UTF-8")); String line = null; StringBuilder result = new StringBuilder(); while ((line = br.readLine()) != null) { // 读取数据 result.append(line + "\n"); } connection.disconnect(); System.out.println(result.toString()); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != is) { is.close(); } if (null != br) { br.close(); } } catch (Exception e) { e.printStackTrace(); } } return ""; } // msisdn, smsTemplateId, paramValues, countryID public static Map buildRequestBody(String msisdn, String smsTemplateId, Map paramValues, String accout, String passward) { if (null == msisdn || null == smsTemplateId || null == accout || null == passward) { System.out.println( "buildRequestBody(): mobiles, templateId or templateParas or account or password is null."); return null; } Map map = new HashMap(); List requestLists = new ArrayList(); MtSmsMessageModel mtSmsMessage = new MtSmsMessageModel(); List mobiles = new ArrayList(); mobiles.add(msisdn); mtSmsMessage.setMobiles(mobiles); mtSmsMessage.setTemplateId(smsTemplateId); mtSmsMessage.setTemplateParas(paramValues); mtSmsMessage.setSignature("【嗨森逛】"); requestLists.add(mtSmsMessage); map.put("account", accout); map.put("password", passward); map.put("requestLists", requestLists); return map; } static void trustAllHttpsCertificates() throws Exception { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { return; } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { return; } @Override public X509Certificate[] getAcceptedIssuers() { return null; } } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, null); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } }