各大短信平台接入方法

短信平台有哪些

最为著名的三大平台:华为短信、阿里短信、腾讯短信;根据各家官网的接入文档进行使用

短信平台接入流程

需要具备哪些信息

各家所需信息不太相同,大致如下:

1.app key
2.app 秘钥
3.app 签名
3.发送者id
4.模版,替换符
5.调用接口
6.异步回调接口

华为云接入代码


    /**
	 * 异步发送华为云短信
	 */
	@Async
	@Override
	public void sendSmsMsg(SsoSms sms) throws Exception {
		if (sms.getPhone() == null || sms.getPhone().length() < 11) {
			log.info("手机号不符合规则:" + sms.getPhone());
		}
        //必填,全局号码格式(包含国家码),示例:+8615123456789,多个号码之间用英文逗号分隔
        String receiver = sms.getPhone(); //短信接收人号码
        /**
         * 选填,使用无变量模板时请赋空值 String templateParas = "";
         * 单变量模板示例:模板内容为"您的验证码是${1}"时,templateParas可填写为"[\"369751\"]"
         * 双变量模板示例:模板内容为"您有${1}件快递请到${2}领取"时,templateParas可填写为"[\"3\",\"人民公园正门\"]"
         * 模板中的每个变量都必须赋值,且取值不能为空
         * 查看更多模板和变量规范:产品介绍>模板和变量规范
         */
        String templateParas = "[" + sms.getCode() + "]"; //模板变量,此处以单变量验证码短信为例,请客户自行生成6位验证码,并定义为字符串类型,以杜绝首位0丢失的问题(例如:002569变成了2569)。

        //请求Body,不携带签名名称时,signature请填null
        String body = SmsUtils.buildRequestBody(sender, receiver, templateId, templateParas, statusCallBack, signature);
        if (null == body || body.isEmpty()) {
            log.error(sms.getPhone() + ":消息体为空");
            return;
        }

        //请求Headers中的X-WSSE参数值
        String wsseHeader = SmsUtils.buildWsseHeader(appKey, appSecret);
        if (null == wsseHeader || wsseHeader.isEmpty()) {
            log.error(sms.getPhone() + ":消息头为空");
            return;
        }

        //为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题
        CloseableHttpClient client = HttpClients.custom()
                    .setSSLContext(new SSLContextBuilder().loadTrustMaterial(null,
                            (x509CertChain, authType) -> true).build())
                    .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                    .build();

        HttpResponse response = client.execute(RequestBuilder.create("POST")//请求方法POST
                    .setUri(url)
                    .addHeader(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded")
                    .addHeader(HttpHeaders.AUTHORIZATION, SmsUtils.AUTH_HEADER_VALUE)
                    .addHeader("X-WSSE", wsseHeader)
                    .setEntity(new StringEntity(body)).build());

        String result = EntityUtils.toString(response.getEntity());
		log.info("返回码:" + response.getStatusLine().getStatusCode() + "|返回体:" + result); //打印响应消息实体
        sms.setCode(response.getStatusLine().getStatusCode() + "");
		sms.setMessage(result);
		sms.setBizId("弃用");
		
		ssoSmsMapper.updateById(sms);
	}

 阿里云接入代码

    /**
	 * 异步发送阿里云短信
	 *
	 * @param sms
	 * @return
	 */
	@Async
	@Override
	public SendSmsResponse sendSmsMsg(Sms sms) {
		if (sms.getSignName() == null) {
			sms.setSignName(this.signName);
		}

		if (sms.getTemplateCode() == null) {
			sms.setTemplateCode(this.templateCode);
		}

		// 阿里云短信官网demo代码
		SendSmsRequest request = new SendSmsRequest();
		request.setMethod(MethodType.POST);
		request.setPhoneNumbers(sms.getPhone());
		request.setSignName(sms.getSignName());
		request.setTemplateCode(sms.getTemplateCode());
		request.setTemplateParam(sms.getParams());
		request.setOutId(sms.getId().toString());

		SendSmsResponse response = null;
		try {
			response = acsClient.getAcsResponse(request);
			if (response != null) {
				log.info("发送短信结果:code:{},message:{},requestId:{},bizId:{}", response.getCode(), response.getMessage(),
						response.getRequestId(), response.getBizId());

				sms.setCode(response.getCode());
				sms.setMessage(response.getMessage());
				sms.setBizId(response.getBizId());
			}
		} catch (ClientException e) {
			e.printStackTrace();
		}

		update(sms);

		return response;
	}

腾讯云接入代码

    /**
	 * 异步发送腾讯云短信
	 */
	@Async
	@Override
	public SmsSingleSenderResult sendSmsMsg(SsoSms sms) {
		if (sms.getSignName() == null) {
			sms.setSignName(this.txYunAppId + "");
		}

		if (sms.getTemplateCode() == null) {
			sms.setTemplateCode(this.templateCode + "");
		}
		
		
		SmsSingleSender e = new SmsSingleSender(txYunAppId, txYunAppKey);
        SmsSingleSenderResult result = null;
		try {
			ArrayList<String> params = new ArrayList<>();
			params.add(sms.getCode());
			result = e.sendWithParam("86", sms.getPhone(), templateCode, params, (String)null, "", "");
			log.info("发送短信结果:result:{},message:{},bizId:{}", result.result, result.errMsg, result.sid);
		} catch (JSONException e1) {
			e1.printStackTrace();
		} catch (HTTPException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		
		ssoSmsMapper.updateById(sms);
		return result;
	}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要基于Spring Boot搭建物联网平台并实现COAP协议接入,你需要遵循以下步骤: 1. 首先需要了解COAP协议,COAP是Constrained Application Protocol(受限应用协议)的缩写,它是一种轻量级的Web传输协议,专门用于连接受限环境下的设备。COAP基于UDP协议,支持多播和组播,具有低延迟和低能耗等特点。在Spring Boot中可以使用Eclipse Californium库来实现COAP协议的接入。 2. 在Spring Boot项目中引入Eclipse Californium库,可以通过Maven或Gradle来引入,具体方法可以参考Eclipse Californium的官方文档。 3. 实现COAP协议的服务端,可以在Spring Boot项目中创建一个COAP服务端类,并添加COAP资源。在COAP资源中定义资源路径、请求方法和响应内容等信息。COAP服务端类需要继承Californium的CoapServer类。 4. 实现COAP协议的客户端,可以通过Eclipse Californium提供的CoapClient类来实现。在Spring Boot项目中创建一个COAP客户端类,通过CoapClient类发送COAP请求,获取响应信息。 5. 在物联网平台中使用COAP协议进行设备接入,可以通过将设备与COAP服务端进行绑定,实现设备信息的采集和控制。在平台中定义COAP资源路径和请求方法,实现设备信息的获取和控制。 综上所述,基于Spring Boot搭建物联网平台并实现COAP协议接入需要掌握COAP协议的基本知识,熟悉Eclipse Californium库的使用方法,并具备Java编程能力。 ### 回答2: 物联网平台是一种用于连接和管理物联网设备的软件平台,它允许设备之间相互通信,并与云端应用进行数据交互和控制操作。基于Spring Boot搭建的物联网平台可以实现COAP协议的接入。 COAP(Constrained Application Protocol)是一种轻量级的应用层协议,专为物联网设备设计。它具有低开销、低带宽和低功耗的特点,适用于资源受限的设备和网络环境。COAP协议可以通过UDP和DTLS(Datagram Transport Layer Security)进行数据传输。 为了在Spring Boot中实现COAP协议接入,可以使用Eclipse Californium项目作为COAP协议的实现库。该项目提供了COAP协议的Java实现,可以方便地嵌入到Spring Boot应用中。 首先,在Spring Boot项目的依赖管理文件(例如pom.xml)中添加Eclipse Californium库的依赖。然后,在Spring Boot的配置文件中设置COAP服务器的监听端口和相关参数。 在Spring Boot中编写COAP的处理器类,用于处理COAP请求和响应。可以定义不同的URI来映射到不同的处理器方法,根据具体需求进行业务逻辑处理和数据交互。处理器方法可以使用COAP的API来处理COAP消息,例如解析请求、发送响应等。 另外,在物联网平台中,还可以与数据库进行交互,将设备数据进行持久化存储和查询。在Spring Boot中,可以使用Spring Data库来简化数据库访问的操作。可以定义实体类来表示设备数据,使用Spring Data提供的注解和API来进行数据库的操作。 通过以上步骤,基于Spring Boot搭建的物联网平台就可以实现COAP协议的接入。该平台可以接收来自物联网设备的COAP请求,处理请求并返回相应的COAP响应。同时,可以将设备数据存储到数据库中,并提供API接口供云端应用访问和控制。这样,可以实现对物联网设备的远程监控和管理。 ### 回答3: 基于Spring Boot搭建的物联网平台可以实现COAP(Constrained Application Protocol)协议的接入,以下是该过程的简要解释。 首先,Spring Boot是一个开源的Java框架,用于快速构建基于Java的应用程序。它提供了一种简单易用的方式搭建RESTful风格的Web服务,并且具有良好的扩展性和模块化的特性,非常适合用于构建物联网平台。 COAP是一种专为物联网设备设计的应用层协议,它基于HTTP协议,但比HTTP更适合于资源受限的设备。COAP协议可以实现对设备的低功耗连接、高效的数据传输和灵活的资源管理。 在基于Spring Boot搭建的物联网平台中,要实现COAP协议的接入,首先需要引入COAP协议相关的依赖。这可以通过在项目的pom.xml文件中添加COAP协议的Java实现库,如Eclipse Californium,来实现。 接下来,可以创建COAP服务器端的资源。在Spring Boot中,可以使用@Controller和@RequestMapping注解来定义COAP资源的访问路径和处理方法。通过处理方法,可以实现对设备的读取、修改、删除等操作。 另外,在COAP协议中,通信的双方都有一个COAP客户端和COAP服务器的身份。因此,物联网平台也需要实现COAP客户端,用于与COAP服务器进行通信。可以使用RestTemplate类或者其他COAP客户端工具来发送COAP请求和接收COAP响应。 最后,基于Spring Boot搭建的物联网平台可以实现COAP协议的接入,通过COAP服务器和客户端的交互,实现对物联网设备的管理和控制。此外,Spring Boot还提供了丰富的特性和扩展性,可以方便地与其他模块进行集成,为物联网平台的开发提供更多的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窦再兴

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值