我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java实现短信发送

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java实现短信发送

首先,我们要实现Java短信发送功能需要去申请第三方短信接口,以阿里云为例
点击跳转
阿里云
在API市场中找到短信验证码接口:
短信验证码接口
我们可以先选择免费试用来测试:
免费试用
点击立即购买后可前往控制台查看:
控制台
OK,一切就绪后我们开始测试使用。
首先我们先回到商品详情页,在商品详情页下面,说明了这个接口的调用地址以及请求参数等:
请求参数
接下来我们通过实例来调用接口进行测试:
1、加入相关依赖
具体可参考:相关依赖

<dependency><groupId>com.alibabagroupId><artifactId>fastjsonartifactId><version>1.2.15version>dependency>        <dependency>            <groupId>org.apache.httpcomponentsgroupId>            <artifactId>httpclientartifactId>            <version>4.2.1version>        dependency>        <dependency>            <groupId>org.apache.httpcomponentsgroupId>            <artifactId>httpcoreartifactId>            <version>4.2.1version>        dependency>        <dependency>            <groupId>commons-langgroupId>            <artifactId>commons-langartifactId>            <version>2.6version>        dependency>        <dependency>            <groupId>org.eclipse.jettygroupId>            <artifactId>jetty-utilartifactId>            <version>9.3.7.v20160115version>        dependency>        <dependency>            <groupId>junitgroupId>            <artifactId>junitartifactId>            <version>4.5version>            <scope>testscope>        dependency>

2、创建HttpUtils.java类
HttpUtils.java类官方也已经帮我们封装好了,我们可以直接前往github下载,点击跳转
这里就直接把代码放上了

package com.aliyun.api.gateway.demo.util;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;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;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.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;public class HttpUtils {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);    }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);    }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);    }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);    }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);    }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);    }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, ssf));        } catch (KeyManagementException ex) {            throw new RuntimeException(ex);        } catch (NoSuchAlgorithmException ex) {        throw new RuntimeException(ex);        }    }}

3、发送验证码

public static void main(String[] args) {        //短信api调用地址        String host = "https://dfsns.market.alicloudapi.com";        //请求路径        String path = "/data/send_sms";        //请求方式        String method = "POST";        //appcode:自己的AppCode,可以在自己的控制台找到,是一串32位的字符串        String appcode = "14xfa0523x3s2fe8ep0u54te14c2w36ad";        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>();        //使用随机数生成4位验证码        StringBuilder stringBuilder = new StringBuilder();        for (int i = 0; i < 4; i++) {            int randomNum = (int) (Math.random()*10);            stringBuilder.append(randomNum);        }        String code = stringBuilder.toString();        //这里是要发送给用户的验证码,我们使用了随机数进行生成        bodys.put("content", "code:"+code);        //这里是接受短信的手机号码,我们在实际开发时这里就不能写死了        bodys.put("phone_number", "176****5321");        //这里是发送短信的模板ID:代表整体短信文案模板        bodys.put("template_id", "TPL_0000");        try {            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();        }    }

好的大功告成,我们可以看下控制台给我们的打印:
打印
说明发送成功了。我们打开手机也可以看到发给我们的验证码
手机收到

来源地址:https://blog.csdn.net/qq_45004609/article/details/128188964

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java实现短信发送

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java怎么实现短信发送

本篇内容主要讲解“Java怎么实现短信发送”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现短信发送”吧!1. 引入相关maven依赖com
2023-06-22

java发送短信的实现步骤

一、在中国网建中注册用户:本程序是通过中国网建提供的SMS短信平台实现的,该平台新用户注册可以拥有免费5条普通短信和3条彩信,足够进行尝试和体验了。中国网建注册地址:http://sms.webchinese.cn/reg.shtml;二、
2023-05-31

java怎么实现发送短信功能

1、在阿里云短信服务中添加签名2、在阿里云短信服务中添加模板3、创建属于自己的AccessKey ID和Access Key Secret4、需要下载两个jar包aliyun-java-sdk-core-3.3.1.jaraliyun-java-sdk-dys
java怎么实现发送短信功能
2019-10-31

SpringBoot怎么实现短信发送

这篇“SpringBoot怎么实现短信发送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么实现短信发送
2023-06-29

Android实现短信发送功能

本文实例实现了两个模拟器之间短信的发送功能,分享给大家供大家参考,具体实现内容如下 1.编辑String.xml文件内容为:
2022-06-06

简单实现android短信发送器

先看看效果图:activity_main.xml2022-06-06

Android短信发送器实现方法

本文实例讲述了Android短信发送器实现方法。分享给大家供大家参考。具体如下: 这里模拟android短信发送器的实现 AndroidManifest.xml清单文件:
2022-06-06

Java如何实现发送短信验证码功能

小编给大家分享一下Java如何实现发送短信验证码功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在J
2023-05-30

使用Java第三方实现发送短信功能

这篇文章主要介绍了使用Java第三方实现发送短信功能,在一些开发中,经常需要有给用户发送短信接收验证码的功能,那么在Java中该如何实现呢,今天我们就一起来看一看
2023-03-24

python发送短信

import http.clientimport urllibhost = "106.ihuyi.com"sms_send_uri = "/webservice/sms.php?method=Submit"account = "xxxx"p
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录