python 阿里云短信接口_阿里云短信接口 (Python)
废话不多说,直接贴代码,有兴趣的访问我的 github。
#!/usr/bin/env python
# -*- coding:utf8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
def sendsms(phone, param_string, access_key_id, access_key_secret, template_code, sign_name):
from datetime import datetime
import uuid
import requests
url = 'https://sms.aliyuncs.com/'
ts = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
once = str(uuid.uuid4())
data = {
'Action': 'SingleSendSms',
'SignName': sign_name,
'TemplateCode': template_code,
'RecNum': phone,
'ParamString': param_string,
'Format': 'JSON',
'Version': '2016-09-27',
'AccessKeyId': access_key_id,
'SignatureMethod': 'HMAC-SHA1',
'Timestamp': ts,
'SignatureVersion': '1.0',
'SignatureNonce': once,
}
def __percent_encode(s):
import urllib
s = str(s)
s = urllib.quote(s.decode('utf8').encode('utf8'), '')
s = s.replace('+', '%20')
s = s.replace('*', '%2A')
s = s.replace('%7E', '~')
return s
def __gen_signature(data, req_method, secret):
import hashlib
import hmac
import base64
sorted_data = sorted(data, key=lambda v: v[0])
vals = []
for k, v in sorted_data:
vals.append(__percent_encode(k) + '=' + __percent_encode(v))
params = '&'.join(vals)
string_to_sign = req_method + '&%2F&' + __percent_encode(params)
key = secret + '&'
signature = base64.encodestring(hmac.new(key, string_to_sign, hashlib.sha1).digest()).strip()
return signature
try:
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
}
signature = __gen_signature(data.items(), 'POST', access_key_secret)
data['Signature'] = signature
r = requests.post(url, data=data, headers=headers)
print r.text
except Exception, e:
print 'EXCEPT:', e
if __name__ == '__main__':
pass
最后想说的是,阿里云文档中关于 base64 后的签名值还需要做一次 URLEncode 编码的说法是有问题的,事实证明只会报错:Specified signature is not matched with our calculation.,掉这坑里差点没爬上来。
python 阿里云短信接口_阿里云短信接口 (Python)相关推荐
- java 阿里大于短信接口_阿里大于发送短信使用教程指导
阿里大于发送短信: 准备工作: (1)应用管理 --> 应用列表 --> 创建应用,从而获取APP Key和APP Secret (2)获取短信签名.短信模板 准备工作完成之后的短信模板 ...
- 云账户合法吗_阿里云帮助中心-阿里云,领先的云计算服务提供商
文本转语音外呼接口(SingleCallByTts) 步骤 1 创建阿里云账号 为了访问语音服务,您需要有一个阿里云账号.如果没有,可首先按照如下步骤创建阿里云账号: 访问阿里云 官方网站,单击页面上 ...
- 阿里云盘内测申请_阿里云网盘公测预约开始了,现在申请还送2个T的空间!
在前段时间,阿里云官宣将推出阿里云网盘:据说其上传下载不限速,而且免登录免客户端下载. 也许是大家受够了百度网盘的一家独大(尤其是几K的下载速度),这次阿里云网盘的推出尤其是一系列的功能更是受到了广大 ...
- 云主机好不好_阿里云主机是什么,阿里云主机怎么样?
阿里云主机是什么 阿里云提供的云主机服务是基于阿里云自主研发的飞天大规模分布式计算系统,通过虚拟化技术整合IT资源,为各行业提供互联网基础设施服务.云服务器具有自助管理.数据安全保障.自动故障恢复和防 ...
- 获取阿里云mysql实例名称_阿里云如何获取数据库名字
全网最新活动请看下方内容或右侧内容! --------------- 阿里云如何获取数据库名字,阿里云服务器回滚数据库. 对于大多数小型或初期项目来说,我们可能常用的做法是先将web.数据库全部安装在 ...
- 微信公众号云服务器年服务费_微信公众号开发者接口费用高吗
微信公众号开发者接口费用高吗 很多企业都想开发自己公司的微信公众号,不过大家最关心的还是微信公众号开发价格问题.今天,微速云小编就为大家带来微信公众号开发者接口费用高吗,一起来了解一下吧. 微信公众号 ...
- 阿里mysql表命名规范_阿里数据库命名规范
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 金蝶k3财务接口_金蝶云为企业成长而生,让工作更高效!
业家才 能等) 金蝶云介绍 金蝶云是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台.金蝶云围绕着"生态.人人.体验",旨在帮助企业打造面向新时代的生 ...
- 安卓手机超过30天短信恢复_免费恢复短信记录安卓(教你Android手机短信恢复技巧)...
随着手机的不断更新换代,现在的手机短信统一存储在了手机中的一种sqlite格式的数据库文件中,想要恢复手机短信,首先需要获取手机的root权限,这是手机的最高权限,获取权限伴随着风险,如果不太了解相关 ...
- python调用js接口_最全总结!聊聊 Python 调用 JS 的几种方式
原标题:最全总结!聊聊 Python 调用 JS 的几种方式 作者 | 星安果 来源 | AirPython 1. 前言 日常 Web 端爬虫过程中,经常会遇到参数被加密的场景,因此,我们需要分析网页 ...
最新文章
- div与span区别及用法
- Codeforces Round #516 (Div. 1) 题解
- Java java.lang.SecurityException: Prohibited package name
- MySQL笔记-查询进程列表(查客户端IP、使用的用户、当前状态、ID号、使用的库)及断开客户端连接
- C++ OpenCV技术实战之身份证离线识别
- 测试电脑硬盘损坏的软件,硬盘检测工具哪个好 如何检测硬盘是否损坏【详细介绍】...
- 快速幂计算x的n次幂,递归版本、迭代版本、python实现
- 【强化学习】强化学习介绍
- 【Web基础】用户登录注册案例
- Hive 编号函数
- apache httpclient 连接 IIB,发送XML请求
- 小强IT游记之大连行
- MATLAB 判断字符串中是否含有特定的字符
- Vue入门:(v-for v-model)
- 编写一个完整的矩阵向量乘法的MPI编程代码
- 解决Android Studio(2022版)gradle下载慢问题
- Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
- HDU 4310 贪心算法 C++版
- 144显示器只有60_为什么需要144hz显示器 突破60有必要吗
- 虎宝宝起名、虎年取名禁忌