You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
6.6 KiB
189 lines
6.6 KiB
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<String, String> templateParas = new HashMap<String, String>();
|
|
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<String, Object> 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<String, Object> buildRequestBody(String msisdn, String smsTemplateId,
|
|
Map<String, String> 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<String, Object> map = new HashMap<String, Object>();
|
|
List<MtSmsMessageModel> requestLists = new ArrayList<MtSmsMessageModel>();
|
|
MtSmsMessageModel mtSmsMessage = new MtSmsMessageModel();
|
|
List<String> mobiles = new ArrayList<String>();
|
|
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());
|
|
}
|
|
|
|
}
|
|
|