赞
踩
依赖
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.2.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- <version>4.2.1</version>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.6</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>9.3.7.v20160115</version>
- </dependency>
- <!-- redis的起步依赖 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-redis</artifactId>
- </dependency>
配置类
-
-
- import org.apache.commons.lang.StringUtils;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpDelete;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.client.methods.HttpPut;
- import org.apache.http.conn.ClientConnectionManager;
- import org.apache.http.conn.scheme.Scheme;
- import org.apache.http.conn.scheme.SchemeRegistry;
- import org.apache.http.conn.scheme.SchemeSocketFactory;
-
- import org.apache.http.conn.ssl.SSLSocketFactory;
- import org.apache.http.entity.ByteArrayEntity;
- import org.apache.http.entity.StringEntity;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.message.BasicNameValuePair;
-
-
- import javax.net.ssl.SSLContext;
- import javax.net.ssl.TrustManager;
- import javax.net.ssl.X509TrustManager;
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.security.KeyManagementException;
- import java.security.NoSuchAlgorithmException;
- import java.security.cert.X509Certificate;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
-
- public class HttpUtils {
-
- /**
- * get
- *
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @return
- * @throws Exception
- */
- public static HttpResponse doGet(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpGet request = new HttpGet(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- return httpClient.execute(request);
- }
-
- /**
- * post form
- *
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @param bodys
- * @return
- * @throws Exception
- */
- public static HttpResponse doPost(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys,
- Map<String, String> bodys)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpPost request = new HttpPost(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- if (bodys != null) {
- List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
-
- for (String key : bodys.keySet()) {
- nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
- }
- UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
- formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
- request.setEntity(formEntity);
- }
-
- return httpClient.execute(request);
- }
-
- /**
- * Post String
- *
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @param body
- * @return
- * @throws Exception
- */
- public static HttpResponse doPost(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys,
- String body)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpPost request = new HttpPost(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- if (StringUtils.isNotBlank(body)) {
- request.setEntity(new StringEntity(body, "utf-8"));
- }
-
- return httpClient.execute(request);
- }
-
- /**
- * Post stream
- *
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @param body
- * @return
- * @throws Exception
- */
- public static HttpResponse doPost(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys,
- byte[] body)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpPost request = new HttpPost(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- if (body != null) {
- request.setEntity(new ByteArrayEntity(body));
- }
-
- return httpClient.execute(request);
- }
-
- /**
- * Put String
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @param body
- * @return
- * @throws Exception
- */
- public static HttpResponse doPut(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys,
- String body)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpPut request = new HttpPut(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- if (StringUtils.isNotBlank(body)) {
- request.setEntity(new StringEntity(body, "utf-8"));
- }
-
- return httpClient.execute(request);
- }
-
- /**
- * Put stream
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @param body
- * @return
- * @throws Exception
- */
- public static HttpResponse doPut(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys,
- byte[] body)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpPut request = new HttpPut(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- if (body != null) {
- request.setEntity(new ByteArrayEntity(body));
- }
-
- return httpClient.execute(request);
- }
-
- /**
- * Delete
- *
- * @param host
- * @param path
- * @param method
- * @param headers
- * @param querys
- * @return
- * @throws Exception
- */
- public static HttpResponse doDelete(String host, String path, String method,
- Map<String, String> headers,
- Map<String, String> querys)
- throws Exception {
- HttpClient httpClient = wrapClient(host);
-
- HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
- for (Map.Entry<String, String> e : headers.entrySet()) {
- request.addHeader(e.getKey(), e.getValue());
- }
-
- return httpClient.execute(request);
- }
-
- private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
- StringBuilder sbUrl = new StringBuilder();
- sbUrl.append(host);
- if (!StringUtils.isBlank(path)) {
- sbUrl.append(path);
- }
- if (null != querys) {
- StringBuilder sbQuery = new StringBuilder();
- for (Map.Entry<String, String> query : querys.entrySet()) {
- if (0 < sbQuery.length()) {
- sbQuery.append("&");
- }
- if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
- sbQuery.append(query.getValue());
- }
- if (!StringUtils.isBlank(query.getKey())) {
- sbQuery.append(query.getKey());
- if (!StringUtils.isBlank(query.getValue())) {
- sbQuery.append("=");
- sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
- }
- }
- }
- if (0 < sbQuery.length()) {
- sbUrl.append("?").append(sbQuery);
- }
- }
-
- return sbUrl.toString();
- }
-
- private static HttpClient wrapClient(String host) {
- HttpClient httpClient = new DefaultHttpClient();
- if (host.startsWith("https://")) {
- sslClient(httpClient);
- }
-
- return httpClient;
- }
-
- private static void sslClient(HttpClient httpClient) {
- try {
- SSLContext ctx = SSLContext.getInstance("TLS");
- X509TrustManager tm = new X509TrustManager() {
- public X509Certificate[] getAcceptedIssuers() {
- return null;
- }
- public void checkClientTrusted(X509Certificate[] xcs, String str) {
-
- }
- public void checkServerTrusted(X509Certificate[] xcs, String str) {
-
- }
- };
- ctx.init(null, new TrustManager[] { tm }, null);
- SSLSocketFactory ssf = new SSLSocketFactory(ctx);
- ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
- ClientConnectionManager ccm = httpClient.getConnectionManager();
- SchemeRegistry registry = ccm.getSchemeRegistry();
- registry.register(new Scheme("https", 443, (SchemeSocketFactory) ssf));
- } catch (KeyManagementException ex) {
- throw new RuntimeException(ex);
- } catch (NoSuchAlgorithmException ex) {
- throw new RuntimeException(ex);
- }
- }
- }
controller
- @RestController
- @RequestMapping("api/user/sms")
- public class SmsController {
-
- @Resource
- private SmsService smsService ;
-
- @GetMapping(value = "/sendCode/{phone}")
- public Result sendValidateCode(@PathVariable String phone) {
- smsService.sendValidateCode(phone);
- return Result.build(null , ResultCodeEnum.SUCCESS) ;
- }
-
- }
servicesImpl
- import com.alibaba.nacos.common.utils.StringUtils;
- import com.atguigu.service.SmsService;
- import com.atguigu.utils.HttpUtils;
- import jakarta.annotation.Resource;
- import org.apache.commons.lang3.RandomStringUtils;
- import org.apache.http.HttpResponse;
- import org.springframework.data.redis.core.RedisTemplate;
-
- import java.util.HashMap;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
-
- public class SmsServiceImpl implements SmsService {
- @Resource
- private RedisTemplate<String,String> redisTemplate;
- @Override
- public void sendValidateCode(String phone) {
- String code = redisTemplate.opsForValue().get("phone:code:" + phone);
- if(StringUtils.hasText(code)) {
- return;
- }
-
- String validateCode = RandomStringUtils.randomNumeric(4); // 生成验证码
- redisTemplate.opsForValue().set("phone:code:" + phone , validateCode , 5 , TimeUnit.MINUTES);
- sendSms(phone , validateCode) ;
- }
- public void sendSms(String phone, String validateCode)
- {
- String host = "https://dfsns.market.alicloudapi.com";
- String path = "/data/send_sms";
- String method = "POST";
- String appcode = "你自己的AppCode";
- Map<String, String> headers = new HashMap<String, String>();
- //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
- headers.put("Authorization", "APPCODE " + appcode);
- //根据API的要求,定义相对应的Content-Type
- headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
- Map<String, String> querys = new HashMap<String, String>();
- Map<String, String> bodys = new HashMap<String, String>();
- bodys.put("content", "code:"+validateCode);
- bodys.put("template_id", "CST_ptdie100"); //注意,CST_ptdie100该模板ID仅为调试使用,调试结果为"status": "OK" ,即表示接口调用成功,然后联系客服报备自己的专属签名模板ID,以保证短信稳定下发
- bodys.put("phone_number", phone);
-
-
- try {
- /**
- * 重要提示如下:
- * HttpUtils请从
- * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
- * 下载
- *
- * 相应的依赖请参照
- * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
- */
- HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
- System.out.println(response.toString());
- //获取response的body
- //System.out.println(EntityUtils.toString(response.getEntity()));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
还需要导入mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 设置驼峰标识 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 打印SQL语句 --> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <plugins> <!-- 分页插件 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"/> </plugins> </configuration>
日志文件logback-spring.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
-
- <contextName>logback</contextName>
-
- <!-- 日志的输出目录 -->
- <property name="log.path" value="D://logs//spzx-manager//logs" />
-
- <!--控制台日志格式:彩色日志-->
- <!-- magenta:洋红 -->
- <!-- boldMagenta:粗红-->
- <!-- cyan:青色 -->
- <!-- white:白色 -->
- <!-- magenta:洋红 -->
- <property name="CONSOLE_LOG_PATTERN" value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/>
-
- <!--文件日志格式-->
- <property name="FILE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" />
-
- <!--编码-->
- <property name="ENCODING" value="UTF-8" />
-
- <!-- 控制台日志 -->
- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- <!-- 临界值过滤器 -->
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- <encoder>
- <pattern>${CONSOLE_LOG_PATTERN}</pattern>
- <charset>${ENCODING}</charset>
- </encoder>
- </appender>
-
- <!-- 文件日志 -->
- <appender name="FILE" class="ch.qos.logback.core.FileAppender">
- <file>${log.path}//log.log</file>
- <append>true</append>
- <encoder>
- <pattern>%date{yyyy-MM-dd HH:mm:ss} %msg%n</pattern>
- <charset>${ENCODING}</charset>
- </encoder>
- </appender>
-
- <!-- 开发环境 -->
- <springProfile name="dev">
- <!-- com.atguigu日志记录器:业务程序INFO级别 -->
- <logger name="com.atguigu" level="INFO" />
- <!-- 根日志记录器:INFO级别 -->
- <root level="INFO">
- <appender-ref ref="CONSOLE" />
- <appender-ref ref="FILE" />
- </root>
- </springProfile>
-
- </configuration>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。