• 关于

    .net 短信接口

    的搜索结果

问题

调用短信推送接口报错

本地服务调用可正常推送部署到ECS服务器调用会报错:com.aliyuncs.exceptions.ClientException: SDK.ServerUnreachable : Server unreachable: java.net....
heavenzyc 2019-12-01 19:26:57 2445 浏览量 回答数 3

问题

调用阿里短信接口 Content has not been provided

方法: public void duanxin() throws ServerException, ClientException{ //设置超时时间-可自行调整 System.setProperty("sun.net.cl...
兴瑞 2019-12-01 20:20:30 3153 浏览量 回答数 3

问题

调用阿里云短信接口报错java.lang.UnsupportedOperationException

最近项目里面需要用到阿里云短信接口推送短信,直接使用阿里云提供的API demo里面的方法调用接口,执行到DefaultProfile.addEndpoint("cn-hangzhou", ...
tanjw 2019-12-01 21:35:37 5016 浏览量 回答数 2

阿里云通信

短信服务是阿里云为用户提供的一种通信服务的能力。 支持国内和国际快速发送验证码、短信通知和推广短信。

回答

首先需要注册阿里云,开通短信服务;地址:https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11174283.4.1.7dZDR0 阿里云短信服务官方操作文档 : https://help.aliyun.com/document_detail/59210.html?spm=5176.sms-account.103.2.4d0c1cberc8Hav 1,获取签名和模板;在左边的导航栏 ,点击国内消息;点击短信发送API  ,拉到最后面 有 demo;demo不在贴出,直接贴出测试 类;demo地址: https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11174283.6.566.d0a32c420pwNyC 点击秘钥管理页面创建 秘钥【注意创建完成秘钥只有一次机会保存到本地,不作不死,特别注意!!!】 返回这页面,继续点击下载SDK ,下载 java 的 【或者在maven 工程中直接配置 pom 文件的依赖 ,支持依赖配置】; com.aliyun aliyun-java-sdk-core 4.0.6 注:如提示报错,先升级基础包版,无法解决可联系技术支持 com.aliyun aliyun-java-sdk-dysmsapi 1.1.0 在管理控制台,可以创建子用户 ; 对子用户进行授权 【不授权短信息的 权限,无法调用短信的接口 】; 测试代码,记得要 pom.xml 中配置依赖,或者手动导入jar包: import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; /** * @auther SyntacticSugar * @data 2018/10/12 0012下午 5:39 */ public class SendMessageTest { //产品名称:云通信短信API产品,开发者无需替换 static final String product = "Dysmsapi"; //产品域名,开发者无需替换 static final String domain = "dysmsapi.aliyuncs.com"; // TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找) static final String accessKeyId = "LTAIpnmgQT2Ek8Rz"; static final String accessKeySecret = "mhfrhzorjACa5yruX0RJ8weODXstUt"; public static SendSmsResponse sendSms() throws ClientException { //可自助调整超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); //初始化acsClient,暂不支持region化 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); //组装请求对象-具体描述见控制台-文档部分内容 SendSmsRequest request = new SendSmsRequest(); //必填:待发送手机号 request.setPhoneNumbers("填写要接受的手机号码"); // //必填:短信签名-可在短信控制台中找到 request.setSignName("填写签名"); // //必填:短信模板-可在短信控制台中找到 request.setTemplateCode("填写模板"); // //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.setTemplateParam("{\"code\":\"6666\"}"); //发送的验证码6666 //选填-上行短信扩展码(无特殊需求用户请忽略此字段) //request.setSmsUpExtendCode("90997"); //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 request.setOutId("yourOutId"); //hint 此处可能会抛出异常,注意catch SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); return sendSmsResponse; } public static void main(String[] args) throws ClientException, InterruptedException { //发短信 SendSmsResponse response = sendSms(); System.out.println("短信接口返回的数据----------------"); System.out.println("Code=" + response.getCode()); System.out.println("Message=" + response.getMessage()); System.out.println("RequestId=" + response.getRequestId()); System.out.println("BizId=" + response.getBizId()); Thread.sleep(3000L); } } 点击运行;然后手机接收到了短信 原文链接:https://blog.csdn.net/weixin_42323802/article/details/83033588 2,完成后点击帮助文档,找到 java 的;
游客lnn2oymvh6kve 2021-03-01 11:08:49 0 浏览量 回答数 0

回答

Revb.net 短信接口 有大侠帮下吗?在线等,急着用 ------------------------- Revb.net 短信接口 有大侠帮下吗?在线等,急着用 ------------------------- Revb.net 短信接口 搞好了,谢谢关注
孤心泪 2019-12-02 02:08:37 0 浏览量 回答数 0

问题

利用.net调用发送短信接口,回执返回成功,但是手机收不到短信

我是新注册的账户,并且开通了短信服务,利用.net调用发送短信接口,sendSmsResponse.Message返回“OK”,但手机接收不到短信。 但是用了一个别人的旧的账号&...
1772840189773997 2019-12-01 18:56:32 301 浏览量 回答数 2

回答

关于监控报警,开源的spark做的还是不够好的1、struct Streaming可以直接在driver端通过接口,获取监控信息eg:query.recentProgress // an array of the most recent progress updates for this query2、spark streaming(DStream)除了UI,另外的方法配置StreamingSource把监控信息输出到ganglia、文件、或者开发下输出到你自己的某个监控系统。3、监控对接到ganglia可以参考 https://www.iteblog.com/archives/1347.html4、使用 Prometheus 和 Grafana 监控 Spark 应用 https://blog.csdn.net/lsshlsw/article/details/826705085、目前阿里云HBase支持的Spark服务是把streaming的核心指标对接到云监控,然后用户可以对指标订阅报警,比如latency超过了40ms,就会发钉钉、短信、电话等https://help.aliyun.com/document_detail/95995.html?spm=a2c4g.11186623.6.605.489b2fc04QZj4E
云hbase+spark 2019-12-02 01:42:37 0 浏览量 回答数 0

回答

注册阿里云账号通过实名认证 2、开通短信服务(开通免费) 开通后可在控制台短信服务栏中查看 3、创建Access Key,获取Access Key ID 和 Access Key Secret(具体看阿里云官方教程) Access Key用于在程序中调用阿里云的服务API,个人理解相当于账号密码,用于认证个人信息的(程序中会用到)。可以创建多个Access Key,但Access Key具体内容只能在创建初期查看,之后是无法查看的,因此需要及时下载到本地。 4、创建短信签名和短信模板 短信签名一般用于标记公司名或者是具体的业务,它会以下的形式出现在短信中: [短信签名] 短信内容.... 短信模板描述了短信的具体内容,可以提供变量来替代具体的数据,程序中会以JSON的形式向短信模板提供变量。 注意:短信签名和短信模板创建后都需要通过审核,审核一般在几个小时内就能完成。 短信模板中的"模板CODE"在程序中会被使用到,通过模板CODE来明确使用哪一个模板。 5、Maven项目中引入阿里云短信服务依赖 6、参看官方Demo编写发送短信的接口 /** * 阿里云短信服务机器人 * * @author minghui.y * @create 2018-05-16 9:54 **/ public class SmsRobotTunnel { private static final Logger LOGGER = LoggerFactory.getLogger(SmsRobotTunnel.class); /**短信API产品名称(短信产品名固定,无需修改)*/ private static final String PRODUCT = "Dysmsapi"; /**短信API产品域名(接口地址固定,无需修改)*/ private static final String DOMAIN = "dysmsapi.aliyuncs.com"; /**AccessKeyId*/ private static final String ACCESSKEYID = "your access key id"; /**accessKeySecret*/ private static final String ACCESSKEYSECRET = "your access key secret"; /**短信签名*/ private static final String SMSSIGN = "your sms sign"; /**短信模板CODE*/ private static final String SMSTEMPLATE0 = "SMS_xxxxxxx"; private static final String SMSTEMPLATE1 = "SMS_xxxxxxx"; /** * 发送短信方法 * @param content:JSON字串,替代短信模板中的变量 * @param phones:可以使多个手机号,以逗号分隔 * @return:发送成功则返回true */ public static boolean send(String content, String phones, SmsBizType bizType) { //可自助调整超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); System.setProperty("sun.net.client.defaultReadTimeout", "10000"); try { //初始化acsClient,暂不支持region化 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESSKEYID, ACCESSKEYSECRET); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", PRODUCT, DOMAIN); IAcsClient acsClient = new DefaultAcsClient(profile); //组装请求对象 SendSmsRequest request = new SendSmsRequest(); //必填:待发送手机号 request.setPhoneNumbers(phones); //必填:短信签名 request.setSignName(SMSSIGN); //必填:短信模板 String templcateCode = null; switch (bizType) { case SMS_CREATE_SERVICE: templcateCode = SMSTEMPLATE0; break; case SMS_PROCESS_SERVICE: templcateCode = SMSTEMPLATE1; break; default: templcateCode = SMSTEMPLATE0; break; } request.setTemplateCode(templcateCode); //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 request.setTemplateParam(content); SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); //解析短信响应结果 if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { //请求成功 return true; } } catch (Exception e) { LOGGER.error("短信发送服务异常!", e); } return false; } } 以上代码有几处需要根据你的实际情况修改: 1、AccessKeyID和AccessKeySecret 2、短信签名(直接写内容,例如短信签名是"abc",此处就是"abc") 3、短信模板CODE,可以有多个,可以存储到Map中根据不同的业务场景选择不同的短信模板 4、send方法的三个参数 content:json格式的字符串,用于替代短信模板中的变量 phone:手机号码字符串,可以是以逗号分隔的多个手机号 bizType:自定义的一个枚举,用来根据场景选择短信模板
游客2q7uranxketok 2021-02-22 13:28:45 0 浏览量 回答数 0

回答

您好,阿里云的短信服务是一项基础通信服务,提供的是通信接口,没有您想要的那种电脑客户端。 不过实际是上使用并不复杂 官方提供了包括java/php/python/.net/node.js的demo https://help.aliyun.com/document_detail/55359.html 如果您本身非程序人员,可以委托其他人编写一个简单的客户端,实现短信发送功能。 但对于个人用户,在使用上尤其在短信签名上有很高要求,可详见: https://help.aliyun.com/document_detail/55327.html 建议您在使用前详读短信服务的文档,确定是否可用。 - - - - - - 作者:Aspirant Zhang 职业:中小型网站制作与运维管理 注意:非阿里云官方客服,知道平台为技术爱好者根据个人经验为您提供处理指引,请勿在本平台泄露网址、IP地址、账户密码及个人信息。非官方回复,仅供参考。 善用智能解答助手https://ia.aliyun.com/ 输入问题关键字如“ECS退款”,阿里云问题不求人! 善用网站自检工具https://zijian.aliyun.com/ 输入网址自动检测,确诊网站表面问题仅3秒!
azhang 2019-12-02 00:25:53 0 浏览量 回答数 0

问题

vb.net 短信接口

为了需要,开了个阿里短信,可接口太复杂,特别是签名,有成功的VB.NET代码教下吗...
孤心泪 2019-12-01 21:20:48 2531 浏览量 回答数 2

问题

短信接口提示:SignatureDoesNotMatch,但是同一Key和secret却可以发另一条

1.使用阿里云短信.netSDK开发的短信报警系统。之前都是好好的。但是近一个月经常发生个别短信发送失败。 2.错误信息:短信未发送成功:send failure:SignatureDoesNotMatch...
游客yggl6chqdlxas 2019-12-01 19:33:13 271 浏览量 回答数 2

回答

你好亲~ 可以查看官方的短信接口调用文档 .NET和PHP语言都是有Demo的 https://help.aliyun.com/product/44282.html 如果此答案帮助到你,麻烦采纳此答案~ 
叶康铭 2019-12-02 00:50:08 0 浏览量 回答数 0

回答

首先监控是延迟的,关于监控报警,开源的spark做的还是不够好的。主要通过以下两种方式进行1、struct Streaming可以直接在driver端通过接口,获取监控信息eg:query.recentProgress // an array of the most recent progress updates for this query2、spark streaming(DStream)除了UI,另外的方法配置StreamingSource把监控信息输出到ganglia、文件、或者开发下输出到你自己的某个监控系统在其他文章中也有使用 Prometheus 和 Grafana 监控 Spark 应用,参考资料如下:https://blog.csdn.net/lsshlsw/article/details/82670508Grafana主要还是展示,spark服务端数据怎么吐出来目前社区版本还是需要加强的。只是监控不报警的话用ganglia就好。目前阿里云HBase支持的Spark服务是把streaming的核心指标对接到云监控,然后用户可以对指标订阅报警,比如latency超过了40ms,就会发钉钉、短信、电话等https://help.aliyun.com/document_detail/95995.html?spm=a2c4g.11186623.6.605.489b2fc04QZj4Ehttp://spark.apache.org/releases/spark-release-2-4-0.html#core-and-spark-sql
hbase小助手 2019-12-02 01:43:21 0 浏览量 回答数 0

问题

MNS Csharp SDK如何下载?

MNS Csharp SDK 建议下载最新发布的 SDK 版本,以达到最佳性能和稳定性。 前置需求 必须是阿里云开发者账户 (参见阿里云官网);必须开通 MNS 服务(立刻开通) 运行帮助 用 Visual...
轩墨 2019-12-01 22:09:03 1136 浏览量 回答数 0

问题

短信查询API(QuerySendDetails)---JAVA

短信发送记录查询接口(QuerySendDetails) 用于查询短信发送的状态,是否成功到达终端用户手机 入参列表 参数名称参数类型必填与否样例取值参数说明PhoneNumberString必须150000000...
nicenelly 2019-12-01 20:57:21 1280 浏览量 回答数 0

问题

广州.NET男屌求职 热:报错

差不多两年的经验吧,一直是做.NET,工具当然是VS+MSSQL,偶尔做了一两个项目是用mysql的,从毕业以来一直在一间公司工作(我很忠诚的哦)&...
kun坤 2020-06-08 11:11:12 3 浏览量 回答数 1

回答

import java.io.UnsupportedEncodingException; import java.net.URLDecoder; public class Test { public static void main(String[] args) throws UnsupportedEncodingException { String src = "%3a%e6%b6%88%e6%81%af%e5%8f%91%e9%80%81%e6%88%90%e5%8a%9f%ef%bc%8c%e8%af%b7%e6%9f%a5%e7%9c%8b%e4%ba%92%e5%8a%a8%e4%bf%a1%e7%ae%b1%ef%bc%81%09"; String decoded = URLDecoder.decode(src, "UTF-8"); System.out.println(decoded); } } 解出来是“:消息发送成功,请查看互动信箱!    ” 运行原理建议去网上好好查一些,这个问题在web开发中很常见。 ps:这个接口做的真偷工减料的,居然不用编码,而是直接返回文字描述的!######谢谢你的回答...######这是哪里的短信服务啊,找他们提供商啊###### 短信平台接口成功失败都有相应的返回值,试一下北京硕达通,验证码5秒,三网合一,单价4分! 请求地址是客户接口程序调用的时候请求的url地址,采用的是http post接口,地址是 http://115.28.172.169:8888/statusApi.aspx 如: action=query&userid=12&account=账号&password=密码 <?xml version="1.0" encoding="utf-8" ?> <returnsms> <statusbox> <mobile>15023239810</mobile>-------------对应的手机号码 <taskid>1212</taskid>-------------同一批任务ID <status>10</status>---------状态报告----10:发送成功,20:发送失败 <receivetime>2011-12-02 22:12:11</receivetime>-------------接收时间 <errorcode>DELIVRD</errorcode>-上级网关返回值,不同网关返回值不同,仅作为参考 </statusbox> <statusbox> <mobile>15023239811</mobile> <taskid>1212</taskid> <status>20</status> <receivetime>2011-12-02 22:12:11</receivetime> <errorcode>2</errorcode> </statusbox> </returnsms> ###### 凌凯    就是短信平台
爱吃鱼的程序员 2020-06-01 11:53:44 0 浏览量 回答数 0

回答

对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKeyID和AccessKeySecret对称加密验证实现。其中AccessKeyID是访问者身份,AccessKeySecret是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。 1. 指定请求参数 在代码中指定请求参数,参数中需要包含公共请求头和接口必备的参数信息。 说明 请求参数中不允许出现以Signature为key的参数。 示例代码如下: String accessKeyId = "testId"; String accessSecret = "testSecret"; java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));// 这里一定要设置GMT时区 java.util.Map<String, String> paras = new java.util.HashMap<String, String>(); 指定参数: paras.put("SignatureMethod", "HMAC-SHA1"); paras.put("SignatureNonce", java.util.UUID.randomUUID().toString()); paras.put("AccessKeyId", accessKeyId); paras.put("SignatureVersion", "1.0"); paras.put("Timestamp", df.format(new java.util.Date())); paras.put("Format", "XML"); paras.put("Action", "BindAxb"); paras.put("Version", "2017-05-25"); paras.put("RegionId", "cn-hangzhou"); paras.put("PoolKey", "FC123456"); paras.put("PhoneNoA", "1700000000"); paras.put("PhoneNoB", "1700000000"); paras.put("Expiration", "2017-05-25 00:00:00"); paras.put("OutId", "123"); 去除签名关键字Key: if (paras.containsKey("Signature")) paras.remove("Signature"); 2. 根据参数Key排序(顺序) 参考代码如下: java.util.TreeMap<String, String> sortParas = new java.util.TreeMap<String, String>(); sortParas.putAll(paras); 3. 构造待签名的请求串 首先介绍下面会用到的特殊URL编码这个是POP特殊的一种规则,即在一般的URLEncode后再增加三种字符替换:加号 (+)替换成 %20、星号 (*)替换成 %2A、 %7E 替换回波浪号 (~)参考代码如下: public static String specialUrlEncode(String value) throws Exception { return java.net.URLEncoder.encode(value, "UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~"); } 构造待签名的请求串: 把排序后的参数顺序拼接成如下格式: specialUrlEncode(参数Key) + "=" + specialUrlEncode(参数值) 参考代码如下: java.util.Iterator it = sortParas.keySet().iterator(); StringBuilder sortQueryStringTmp = new StringBuilder(); while (it.hasNext()) { String key = it.next(); sortQueryStringTmp.append("&").append(specialUrlEncode(key)).append("=").append(specialUrlEncode(paras.get(key))); } String sortedQueryString = sortQueryStringTmp.substring(1);// 去除第一个多余的&符号 打印上面的 sortQueryString。结果如下: AccessKeyId=testId&Action=BindAxb&Format=XML&OutId=123&RegionId=cn-hangzhou&SignatureMethod=HMAC-SHA1&SignatureNonce=45e25e9b-0a6f-4070-8c85-2956eda1b466&SignatureVersion=1.0&PoolKey=FC123456&PhoneNoA=170000000&PhoneNoB=17100000000&Expiration=2017-07-12T02%3A42%3A19Z&Timestamp=2017-07-12T02%3A42%3A19Z&Version=2017-05-25` 对应的未URL编码的值(方便用户对比): AccessKeyId=testId&Action=SendSms&Format=XML&OutId=123&PhoneNumbers=15300000001&RegionId=cn-hangzhou&SignName=阿里云短信测试专用&SignatureMethod=HMAC-SHA1&SignatureNonce=45e25e9b-0a6f-4070-8c85-2956eda1b466&SignatureVersion=1.0&TemplateCode=SMS_71390007&TemplateParam={"customer":"test"}&Timestamp=2017-07-12T02:42:19Z&Version=2017-05-25 按POP的签名规则拼接成最终的待签名串。 规则如下: HTTPMethod + “&” + specialUrlEncode(“/”) + ”&” + specialUrlEncode(sortedQueryString) 参考代码如下: StringBuilder stringToSign = new StringBuilder(); stringToSign.append("GET").append("&"); stringToSign.append(specialUrlEncode("/")).append("&"); stringToSign.append(specialUrlEncode(sortedQueryString)); 这就完成了待签名的请求字符串。打印结果如下: GET&%2F&AccessKeyId%3DtestId&Action%BindAxb&Format%3DXML&OutId%3D123&PhoneNoA%3D17000000000&RegionId%3Dcn-hangzhou&PhoneNob%3D171000000000&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D45e25e9b-0a6f-4070-8c85-2956eda1b466&SignatureVersion%3D1.0&PoolKey%3DFC123456&Expiration%3D2017-07-12T02%253A42%253A19Z&Timestamp%3D2017-07-12T02%253A42%253A19Z&Version%3D2017-05-25` 4. 签名 签名采用HmacSHA1算法 + Base64,编码采用UTF-8。参考代码如下: String sign = sign(accessSecret + "&", stringToSign.toString()); public static String sign(String accessSecret, String stringToSign) throws Exception { javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); mac.init(new javax.crypto.spec.SecretKeySpec(accessSecret.getBytes("UTF-8"), "HmacSHA1")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); return new sun.misc.BASE64Encoder().encode(signData); } 参数说明: accessSecret:你的AccessKeyId对应的秘钥AccessSecret,特别说明:POP要求需要后面多加一个“&”字符,即accessSecret + “&”。 stringToSign:即第三步生成的待签名请求串。 签名后的结果打印如下: zJDF+Lrzhj/ThnlvIToysFRq6t4= 5. 增加签名结果到请求参数中,发送请求 说明 签名也要做特殊URL编码。 String Signature = specialUrlEncode(sign);// zJDF%2BLrzhj%2FThnlvIToysFRq6t4%3D 最终完整的GET请求HTTP为: https://dyplsapi.aliyuncs.com/?AccessKeyId=TMP.AQF0OBbrimInaGb2KfSQv1P8Pkn-Lb42nzU2BhznSVfLMid2PONQYrmMCKlmAAAwLAIUUY77CZGRTjNEl8Sjkf3JHa1epjACFCjQhIMENak7MzJ0tE_aDe0x6Jln&Action=BindAxb&Expiration=2019-09-05%2012%3A00%3A00&Format=JSON&PhoneNoA=15951955192&PhoneNoB=13500000000&SecureTransport=true&SignatureMethod=HMAC-SHA1&SignatureNonce=f47d2107663beeedb84284697babfaaf&SignatureVersion=1.0&SourceIp=42.120.75.150&Timestamp=2019-03-01T07%3A24%3A36Z&Version=2017-05-25&Signature=jrS5Hh4NDSsLIod2809ofkuk%2F98%3D JAVA示例 完整的Java签名Demo代码: 说明 以短信服务SendSms接口为列进行说明,业务参数请自行替换成隐私保护绑定接口参数即可。 public class SignDemo { public static void main(String[] args) throws Exception { String accessKeyId = "testId"; String accessSecret = "testSecret"; java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));// 这里一定要设置GMT时区 java.util.Map<String, String> paras = new java.util.HashMap<String, String>(); // 1. 系统参数 paras.put("SignatureMethod", "HMAC-SHA1"); paras.put("SignatureNonce", java.util.UUID.randomUUID().toString()); paras.put("AccessKeyId", accessKeyId); paras.put("SignatureVersion", "1.0"); paras.put("Timestamp", df.format(new java.util.Date())); paras.put("Format", "XML"); // 2. 业务API参数 paras.put("Action", "SendSms"); paras.put("Version", "2017-05-25"); paras.put("RegionId", "cn-hangzhou"); paras.put("PhoneNumbers", "15300000001"); paras.put("SignName", "阿里云短信测试专用"); paras.put("TemplateParam", "{"customer":"test"}"); paras.put("TemplateCode", "SMS_71390007"); paras.put("OutId", "123"); // 3. 去除签名关键字Key if (paras.containsKey("Signature")) paras.remove("Signature"); // 4. 参数KEY排序 java.util.TreeMap<String, String> sortParas = new java.util.TreeMap<String, String>(); sortParas.putAll(paras); // 5. 构造待签名的字符串 java.util.Iterator it = sortParas.keySet().iterator(); StringBuilder sortQueryStringTmp = new StringBuilder(); while (it.hasNext()) { String key = it.next(); sortQueryStringTmp.append("&").append(specialUrlEncode(key)).append("=").append(specialUrlEncode(paras.get(key))); } String sortedQueryString = sortQueryStringTmp.substring(1);// 去除第一个多余的&符号 StringBuilder stringToSign = new StringBuilder(); stringToSign.append("GET").append("&"); stringToSign.append(specialUrlEncode("/")).append("&"); stringToSign.append(specialUrlEncode(sortedQueryString)); String sign = sign(accessSecret + "&", stringToSign.toString()); // 6. 签名最后也要做特殊URL编码 String signature = specialUrlEncode(sign); System.out.println(paras.get("SignatureNonce")); System.out.println("\r\n=========\r\n"); System.out.println(paras.get("Timestamp")); System.out.println("\r\n=========\r\n"); System.out.println(sortedQueryString); System.out.println("\r\n=========\r\n"); System.out.println(stringToSign.toString()); System.out.println("\r\n=========\r\n"); System.out.println(sign); System.out.println("\r\n=========\r\n"); System.out.println(signature); System.out.println("\r\n=========\r\n"); // 最终打印出合法GET请求的URL System.out.println("http://dysmsapi.aliyuncs.com/?Signature=" + signature + sortQueryStringTmp); } public static String specialUrlEncode(String value) throws Exception { return java.net.URLEncoder.encode(value, "UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~"); } public static String sign(String accessSecret, String stringToSign) throws Exception { javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); mac.init(new javax.crypto.spec.SecretKeySpec(accessSecret.getBytes("UTF-8"), "HmacSHA1")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); return new sun.misc.BASE64Encoder().encode(signData); } }
保持可爱mmm 2020-03-27 00:23:46 0 浏览量 回答数 0

回答

有的服务商提供了专门的调试平台提供接口调试服务,能快速解决这些问题,实现快速集成。你可以百度下,短信接口调试平台就行~ 推荐一家比较好的服务商  www.sudas.cn ######http://www.yunpian.com/ 用了一年,感觉不错,堵塞问题不是很多######我们也是用云片的,一直比较稳定######充值了1000条,试一下。。######帮顶!同问######你用的哪个?我们公司用的jvtd.cn的,目前还没什么问题。不过相比就贵了一点。######有那种免费的吗,哈哈哈######短信主要是看通道资源和售后服务~推荐www.vipdx.net 麦轩科技~价格实惠~服务比较不错。速度也很快######卡洛思短信平台的短信通道资源比较丰富,稳定性不错,可以考虑下, www.karlos.com.cn ,######我们公司用的 https://luosimao.com/还挺不错的,验证码测试下来三五秒就到了,用起来也挺稳定的,你可以试试看###### 目前使用最普遍的有网上银行、网上商城、O2O、票务公司、电商、第三方支付机构等。短信验证码利用信信客短信平台发送的短信验证码验证注册会员,有效降低了恶意注册等,内容大多为:“尊敬的用户,欢迎您注册XX网站,您的注册验证码为:******,在半小时内输入。【XX网站】”提醒到。   其在网上购物以及手机APP的使用的使用较为普遍,为进一步丰富网上银行安全认证,改善客户安全体验,网上购物以及手机APP陆续推出短信验证服务。该项安全认证服务通过协调整合网上银行、短信、电话银行等多渠道互动的优势,为网银客户又增加了一道安全保障。更加保障了用户的使用安全问题。   下面信信客小编就为大家整理一些常见的短信验证码模板供大家参考:   1.注册验证码短信模板类似于:您好,您的注册验证码为XXXX,请您尽快输入。【自定义签名】【信信客】您好,欢迎使用信信客,您的手机验证码是:805316,若非本人操作,请忽略!   2.修改/找回密码短信模板类似于:【信信客】亲,您正在进行找回密码操作,切勿将验证码泄露于他人,如验证码泄露会有账号被盗风险。验证码:399651。   3.订单通知模板类似于:【羊羊每食】您向店家<天隆大厦>预定餐号为:013084438,总价为25元的订单已被确认,请留意接听外卖电话,如有疑问请致电商家,祝您用餐愉快!   4.发货通知模板类似于:【国邦物业】您好!佳兆业大都汇A栋2106C您承担免租期间管理费75.4元,费用已在您近期租金中扣除,如有疑问请联系物业管理。【星源学校】家长好!学校将于本月28日下午放月假,1点半校车送学生回家,自接的家长请在2点来校接孩子,本月31日下午返校。请您在规定时段按时接送孩子,谢谢合作!   5、预约通知类【金立通信】尊敬的金立用户:您好!很荣幸为您服务,您咨询的售后服务地址是:虎门国际电子交易中心三层323室;感谢您对金立手机的支持。 ###### 短信平台就用北京硕达通,验证码5秒,三网合一,单价4分,到达率99.9%,运营商原始回执
爱吃鱼的程序员 2020-06-02 13:11:56 0 浏览量 回答数 0

回答

有的服务商提供了专门的调试平台提供接口调试服务,能快速解决这些问题,实现快速集成。你可以百度下,短信接口调试平台就行~ 推荐一家比较好的服务商  www.sudas.cn ######http://www.yunpian.com/ 用了一年,感觉不错,堵塞问题不是很多######我们也是用云片的,一直比较稳定######充值了1000条,试一下。。######帮顶!同问######你用的哪个?我们公司用的jvtd.cn的,目前还没什么问题。不过相比就贵了一点。######有那种免费的吗,哈哈哈######短信主要是看通道资源和售后服务~推荐www.vipdx.net 麦轩科技~价格实惠~服务比较不错。速度也很快######卡洛思短信平台的短信通道资源比较丰富,稳定性不错,可以考虑下, www.karlos.com.cn ,######我们公司用的 https://luosimao.com/还挺不错的,验证码测试下来三五秒就到了,用起来也挺稳定的,你可以试试看###### 目前使用最普遍的有网上银行、网上商城、O2O、票务公司、电商、第三方支付机构等。短信验证码利用信信客短信平台发送的短信验证码验证注册会员,有效降低了恶意注册等,内容大多为:“尊敬的用户,欢迎您注册XX网站,您的注册验证码为:******,在半小时内输入。【XX网站】”提醒到。   其在网上购物以及手机APP的使用的使用较为普遍,为进一步丰富网上银行安全认证,改善客户安全体验,网上购物以及手机APP陆续推出短信验证服务。该项安全认证服务通过协调整合网上银行、短信、电话银行等多渠道互动的优势,为网银客户又增加了一道安全保障。更加保障了用户的使用安全问题。   下面信信客小编就为大家整理一些常见的短信验证码模板供大家参考:   1.注册验证码短信模板类似于:您好,您的注册验证码为XXXX,请您尽快输入。【自定义签名】【信信客】您好,欢迎使用信信客,您的手机验证码是:805316,若非本人操作,请忽略!   2.修改/找回密码短信模板类似于:【信信客】亲,您正在进行找回密码操作,切勿将验证码泄露于他人,如验证码泄露会有账号被盗风险。验证码:399651。   3.订单通知模板类似于:【羊羊每食】您向店家<天隆大厦>预定餐号为:013084438,总价为25元的订单已被确认,请留意接听外卖电话,如有疑问请致电商家,祝您用餐愉快!   4.发货通知模板类似于:【国邦物业】您好!佳兆业大都汇A栋2106C您承担免租期间管理费75.4元,费用已在您近期租金中扣除,如有疑问请联系物业管理。【星源学校】家长好!学校将于本月28日下午放月假,1点半校车送学生回家,自接的家长请在2点来校接孩子,本月31日下午返校。请您在规定时段按时接送孩子,谢谢合作!   5、预约通知类【金立通信】尊敬的金立用户:您好!很荣幸为您服务,您咨询的售后服务地址是:虎门国际电子交易中心三层323室;感谢您对金立手机的支持。 ###### 短信平台就用北京硕达通,验证码5秒,三网合一,单价4分,到达率99.9%,运营商原始回执
爱吃鱼的程序员 2020-05-29 17:57:58 0 浏览量 回答数 0

回答

有的服务商提供了专门的调试平台提供接口调试服务,能快速解决这些问题,实现快速集成。你可以百度下,短信接口调试平台就行~ 推荐一家比较好的服务商  www.sudas.cn ######http://www.yunpian.com/ 用了一年,感觉不错,堵塞问题不是很多######我们也是用云片的,一直比较稳定######充值了1000条,试一下。。######帮顶!同问######你用的哪个?我们公司用的jvtd.cn的,目前还没什么问题。不过相比就贵了一点。######有那种免费的吗,哈哈哈######短信主要是看通道资源和售后服务~推荐www.vipdx.net 麦轩科技~价格实惠~服务比较不错。速度也很快######卡洛思短信平台的短信通道资源比较丰富,稳定性不错,可以考虑下, www.karlos.com.cn ,######我们公司用的 https://luosimao.com/还挺不错的,验证码测试下来三五秒就到了,用起来也挺稳定的,你可以试试看###### 目前使用最普遍的有网上银行、网上商城、O2O、票务公司、电商、第三方支付机构等。短信验证码利用信信客短信平台发送的短信验证码验证注册会员,有效降低了恶意注册等,内容大多为:“尊敬的用户,欢迎您注册XX网站,您的注册验证码为:******,在半小时内输入。【XX网站】”提醒到。   其在网上购物以及手机APP的使用的使用较为普遍,为进一步丰富网上银行安全认证,改善客户安全体验,网上购物以及手机APP陆续推出短信验证服务。该项安全认证服务通过协调整合网上银行、短信、电话银行等多渠道互动的优势,为网银客户又增加了一道安全保障。更加保障了用户的使用安全问题。   下面信信客小编就为大家整理一些常见的短信验证码模板供大家参考:   1.注册验证码短信模板类似于:您好,您的注册验证码为XXXX,请您尽快输入。【自定义签名】【信信客】您好,欢迎使用信信客,您的手机验证码是:805316,若非本人操作,请忽略!   2.修改/找回密码短信模板类似于:【信信客】亲,您正在进行找回密码操作,切勿将验证码泄露于他人,如验证码泄露会有账号被盗风险。验证码:399651。   3.订单通知模板类似于:【羊羊每食】您向店家<天隆大厦>预定餐号为:013084438,总价为25元的订单已被确认,请留意接听外卖电话,如有疑问请致电商家,祝您用餐愉快!   4.发货通知模板类似于:【国邦物业】您好!佳兆业大都汇A栋2106C您承担免租期间管理费75.4元,费用已在您近期租金中扣除,如有疑问请联系物业管理。【星源学校】家长好!学校将于本月28日下午放月假,1点半校车送学生回家,自接的家长请在2点来校接孩子,本月31日下午返校。请您在规定时段按时接送孩子,谢谢合作!   5、预约通知类【金立通信】尊敬的金立用户:您好!很荣幸为您服务,您咨询的售后服务地址是:虎门国际电子交易中心三层323室;感谢您对金立手机的支持。 ###### 短信平台就用北京硕达通,验证码5秒,三网合一,单价4分,到达率99.9%,运营商原始回执
优选2 2020-06-05 12:02:33 0 浏览量 回答数 0

回答

对于每一次HTTP或者HTTPS协议请求,我们会根据访问中的签名信息验证访问请求者身份。具体由使用AccessKeyID和AccessKeySecret对称加密验证实现。其中AccessKeyID是访问者身份,AccessKeySecret是加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密谨防泄露。 1. 指定请求参数 在代码中指定请求参数,参数中需要包含公共请求头和接口必备的参数信息。 说明 请求参数中不允许出现以Signature为key的参数。 示例代码如下: String accessKeyId = "testId"; String accessSecret = "testSecret"; java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));// 这里一定要设置GMT时区 java.util.Map<String, String> paras = new java.util.HashMap<String, String>(); 指定参数: paras.put("SignatureMethod", "HMAC-SHA1"); paras.put("SignatureNonce", java.util.UUID.randomUUID().toString()); paras.put("AccessKeyId", accessKeyId); paras.put("SignatureVersion", "1.0"); paras.put("Timestamp", df.format(new java.util.Date())); paras.put("Format", "XML"); paras.put("Action", "SendSms"); paras.put("Version", "2017-05-25"); paras.put("RegionId", "cn-hangzhou"); paras.put("PhoneNumbers", "15300000001"); paras.put("SignName", "阿里云短信测试专用"); paras.put("TemplateParam", "{"customer":"test"}"); paras.put("TemplateCode", "SMS_71390007"); paras.put("OutId", "123"); 去除签名关键字Key: if (paras.containsKey("Signature")) paras.remove("Signature"); 根据参数Key排序(顺序) 参考代码如下: java.util.TreeMap<String, String> sortParas = new java.util.TreeMap<String, String>(); .sortParas.putAll(paras); 构造待签名的请求串 首先介绍下面会用到的特殊URL编码这个是POP特殊的一种规则,即在一般的URLEncode后再增加三种字符替换:加号 (+)替换成 %20、星号 (*)替换成 %2A、 %7E 替换回波浪号 (~)参考代码如下: public static String specialUrlEncode(String value) throws Exception { return java.net.URLEncoder.encode(value, "UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~"); } 构造待签名的请求串: 把排序后的参数顺序拼接成如下格式: * specialUrlEncode(参数Key) + "=" + specialUrlEncode(参数值) 参考代码如下: java.util.Iterator<String> it = sortParas.keySet().iterator(); StringBuilder sortQueryStringTmp = new StringBuilder(); while (it.hasNext()) { String key = it.next(); sortQueryStringTmp.append("&").append(specialUrlEncode(key)).append("=").append(specialUrlEncode(paras.get(key))); } String sortedQueryString = sortQueryStringTmp.substring(1);// 去除第一个多余的&符号 打印上面的 sortQueryString。结果如下: AccessKeyId=testId&Action=SendSms&Format=XML&OutId=123&PhoneNumbers=15300000001&RegionId=cn-hangzhou&SignName=%E9%98%BF%E9%87%8C%E4%BA%91%E7%9F%AD%E4%BF%A1%E6%B5%8B%E8%AF%95%E4%B8%93%E7%94%A8&SignatureMethod=HMAC-SHA1&SignatureNonce=45e25e9b-0a6f-4070-8c85-2956eda1b466&SignatureVersion=1.0&TemplateCode=SMS_71390007&TemplateParam=%7B%22customer%22%3A%22test%22%7D&Timestamp=2017-07-12T02%3A42%3A19Z&Version=2017-05-25 对应的未URL编码的值(方便用户对比): AccessKeyId=testId&Action=SendSms&Format=XML&OutId=123&PhoneNumbers=15300000001&RegionId=cn-hangzhou&SignName=阿里云短信测试专用&SignatureMethod=HMAC-SHA1&SignatureNonce=45e25e9b-0a6f-4070-8c85-2956eda1b466&SignatureVersion=1.0&TemplateCode=SMS_71390007&TemplateParam={"customer":"test"}&Timestamp=2017-07-12T02:42:19Z&Version=2017-05-25 按POP的签名规则拼接成最终的待签名串。 规则如下: * HTTPMethod + “&” + specialUrlEncode(“/”) + ”&” + specialUrlEncode(sortedQueryString) 参考代码如下: StringBuilder stringToSign = new StringBuilder(); stringToSign.append("GET").append("&"); stringToSign.append(specialUrlEncode("/")).append("&"); stringToSign.append(specialUrlEncode(sortedQueryString)); 这就完成了待签名的请求字符串。打印结果如下: GET&%2F&AccessKeyId%3DtestId%26Action%3DSendSms%26Format%3DXML%26OutId%3D123%26PhoneNumbers%3D15300000001%26RegionId%3Dcn-hangzhou%26SignName%3D%25E9%2598%25BF%25E9%2587%258C%25E4%25BA%2591%25E7%259F%25AD%25E4%25BF%25A1%25E6%25B5%258B%25E8%25AF%2595%25E4%25B8%2593%25E7%2594%25A8%26SignatureMethod%3DHMAC-SHA1%26SignatureNonce%3D45e25e9b-0a6f-4070-8c85-2956eda1b466%26SignatureVersion%3D1.0%26TemplateCode%3DSMS_71390007%26TemplateParam%3D%257B%2522customer%2522%253A%2522test%2522%257D%26Timestamp%3D2017-07-12T02%253A42%253A19Z%26Version%3D2017-05-25 签名 签名采用HmacSHA1算法 + Base64,编码采用UTF-8。参考代码如下: String sign = sign(accessSecret + "&", stringToSign.toString()); public static String sign(String accessSecret, String stringToSign) throws Exception { javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); mac.init(new javax.crypto.spec.SecretKeySpec(accessSecret.getBytes("UTF-8"), "HmacSHA1")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); return new sun.misc.BASE64Encoder().encode(signData); } 参数说明: accessSecret:你的AccessKeyId对应的秘钥AccessSecret,特别说明:POP要求需要后面多加一个“&”字符,即accessSecret + “&” stringToSign:即第三步生成的待签名请求串 签名后的结果打印如下: zJDF+Lrzhj/ThnlvIToysFRq6t4= 增加签名结果到请求参数中,发送请求 说明 签名也要做特殊URL编码。 String Signature = specialUrlEncode(sign);// zJDF%2BLrzhj%2FThnlvIToysFRq6t4%3D 最终完整的GET请求HTTP为: http://dysmsapi.aliyuncs.com/?Signature=zJDF%2BLrzhj%2FThnlvIToysFRq6t4%3D&AccessKeyId=testId&Action=SendSms&Format=XML&OutId=123&PhoneNumbers=15300000001&RegionId=cn-hangzhou&SignName=%E9%98%BF%E9%87%8C%E4%BA%91%E7%9F%AD%E4%BF%A1%E6%B5%8B%E8%AF%95%E4%B8%93%E7%94%A8&SignatureMethod=HMAC-SHA1&SignatureNonce=45e25e9b-0a6f-4070-8c85-2956eda1b466&SignatureVersion=1.0&TemplateCode=SMS_71390007&TemplateParam=%7B%22customer%22%3A%22test%22%7D&Timestamp=2017-07-12T02%3A42%3A19Z&Version=2017-05-25 JAVA示例 完整的Java签名Demo代码: public class SignDemo { public static void main(String[] args) throws Exception { String accessKeyId = "testId"; String accessSecret = "testSecret"; java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));// 这里一定要设置GMT时区 java.util.Map<String, String> paras = new java.util.HashMap<String, String>(); // 1. 系统参数 paras.put("SignatureMethod", "HMAC-SHA1"); paras.put("SignatureNonce", java.util.UUID.randomUUID().toString()); paras.put("AccessKeyId", accessKeyId); paras.put("SignatureVersion", "1.0"); paras.put("Timestamp", df.format(new java.util.Date())); paras.put("Format", "XML"); // 2. 业务API参数 paras.put("Action", "SendSms"); paras.put("Version", "2017-05-25"); paras.put("RegionId", "cn-hangzhou"); paras.put("PhoneNumbers", "15300000001"); paras.put("SignName", "阿里云短信测试专用"); paras.put("TemplateParam", "{"customer":"test"}"); paras.put("TemplateCode", "SMS_71390007"); paras.put("OutId", "123"); // 3. 去除签名关键字Key if (paras.containsKey("Signature")) paras.remove("Signature"); // 4. 参数KEY排序 java.util.TreeMap<String, String> sortParas = new java.util.TreeMap<String, String>(); sortParas.putAll(paras); // 5. 构造待签名的字符串 java.util.Iterator it = sortParas.keySet().iterator(); StringBuilder sortQueryStringTmp = new StringBuilder(); while (it.hasNext()) { String key = it.next(); sortQueryStringTmp.append("&").append(specialUrlEncode(key)).append("=").append(specialUrlEncode(paras.get(key))); } String sortedQueryString = sortQueryStringTmp.substring(1);// 去除第一个多余的&符号 StringBuilder stringToSign = new StringBuilder(); stringToSign.append("GET").append("&"); stringToSign.append(specialUrlEncode("/")).append("&"); stringToSign.append(specialUrlEncode(sortedQueryString)); String sign = sign(accessSecret + "&", stringToSign.toString()); // 6. 签名最后也要做特殊URL编码 String signature = specialUrlEncode(sign); System.out.println(paras.get("SignatureNonce")); System.out.println("\r\n=========\r\n"); System.out.println(paras.get("Timestamp")); System.out.println("\r\n=========\r\n"); System.out.println(sortedQueryString); System.out.println("\r\n=========\r\n"); System.out.println(stringToSign.toString()); System.out.println("\r\n=========\r\n"); System.out.println(sign); System.out.println("\r\n=========\r\n"); System.out.println(signature); System.out.println("\r\n=========\r\n"); // 最终打印出合法GET请求的URL System.out.println("http://dysmsapi.aliyuncs.com/?Signature=" + signature + sortQueryStringTmp); } public static String specialUrlEncode(String value) throws Exception { return java.net.URLEncoder.encode(value, "UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~"); } public static String sign(String accessSecret, String stringToSign) throws Exception { javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); mac.init(new javax.crypto.spec.SecretKeySpec(accessSecret.getBytes("UTF-8"), "HmacSHA1")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); return new sun.misc.BASE64Encoder().encode(signData); } } `
保持可爱mmm 2020-03-27 00:48:46 0 浏览量 回答数 0

问题

SDK及DEMO下载

短信产品相关的SDK及DEMO程序 文件清单 api_demo(短信服务API接口调用DEMO工程)api_sdk(短信服务API接口依赖的SDK)msg_demo(短信回执消息的DEMO)msg_sdk(短信回执消息的SDK)...
nicenelly 2019-12-01 20:57:56 1162 浏览量 回答数 0

问题

号码隐私保护解绑接口

解绑接口(UnbindSubscription) 步骤 1 创建阿里云账号 为了访问AXN隐私号、AXB中间号服务,您需要有一个阿里云账号。如果没有,可首先按照如下步骤创建阿里云账号: ...
猫饭先生 2019-12-01 21:00:22 1030 浏览量 回答数 0

回答

Re邮件推送 API 发送短信相关接口 SingleSendSms 有调用成功的吗? 终于找到问题了,造成此问题的主要原因是参数没有严格按照大小写排序。 在使用 C#/.Net 调用 OpenAPI 时,在签名算法中,如果使用 SortedDictionary 来对参数排序,需要严格按照大小写排序。可参考以下代码: SortedDictionaryparameters = new SortedDictionary(StringComparer.Ordinal);
exambest 2019-12-02 01:59:25 0 浏览量 回答数 0

回答

Re邮件推送 API 发送短信相关接口 SingleSendSms 有调用成功的吗? 终于找到问题了,造成此问题的主要原因是参数没有严格按照大小写排序。 在使用 C#/.Net 调用 OpenAPI 时,在签名算法中,如果使用 SortedDictionary 来对参数排序,需要严格按照大小写排序。可参考以下代码: SortedDictionaryparameters = new SortedDictionary(StringComparer.Ordinal);
exambest 2019-12-02 01:59:28 0 浏览量 回答数 0

回答

Revb.net 短信接口 亲 可以试下我们卡洛思的短信平台 ,接口调用很简单,通道也很棒 ,sp资质和落地代码都有哦,服务肯定更好啦。
卡洛思短信 2019-12-02 02:08:37 0 浏览量 回答数 0

回答

Re短信发送失败接口却不能捕获失败信息? 抱歉图片没有传上去 我用.net写了短信发送,不过无法识别 如“UNDELIV” 类型的运营商发送失败的情况,“InvalidSendSms”类型的错误信息却可以得知。该怎么做才能知道短信是否真的发送失败了呢? 此处异常无法捕获运营商错误 ------------------------- Re短信发送失败接口却不能捕获失败信息? 不知道为何图片总是传不上去……
百里潋長 2019-12-01 23:43:38 0 浏览量 回答数 0

回答

 这个开发语言太小众了,现在基本没多少人用了,你可以参考java或者.net的代码,原理都是一样的, 建立http连接,然后提交参数到短信接口。
vesaa 2019-12-02 00:49:40 0 浏览量 回答数 0

问题

短信发送失败接口却不能捕获失败信息?

我用.net写了短信发送,不过无法识别 如 “ [font=PingFangSC, "]UNDELIV [font=PingFangSC, "]” 类型的运营商发送失败的情况,“ ...
百里潋長 2019-12-01 21:31:18 2146 浏览量 回答数 1

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT