清华大学短信平台接口使用
2019-06-19 本文已影响0人
九之天
title: 清华大学短信平台接口使用
date: 2018-03-19 13:30:08
tags: [python,web2py,sms,requests]
需求
项目需要将课酬的发放信息短信告知教师,所以直接使用了清华校内的短信平台,接口描述文档及其简约。因为之前做了微信公众号的接口,算是有了经验,开发很快。
短信平台接口说明
接口采用HTTP方式
域名:http://dxpt.cic.tsinghua.edu.cn/
需要从短信平台管理员处获得短信平台的appid和appkey
第一步:
使用Get方式,从http://dxpt.cic.tsinghua.edu.cn/gettimestamp.jsp获取时间戳
第二步
使用Post方式,调用http://dxpt.cic.tsinghua.edu.cn/sendsms.jsp?destSmsNumbers={发送号码,分割}&appId={短信平台的appid}&timeMillisString={t}&token={token}
POST参数:smsContent=urlencode后的短信内容,中文采用gbk编码
t为第一步获取的时间戳
token为sha1(“t:appkey:appid”) (可以使用baseclass中的org.thcic.crypt.Digest.SHA函数生成)
实战
然而,一切都逃不出这个然而,短信一直没有发送成功。平台那边交流很复杂,接电话的不懂技术,只能邮件沟通。
万幸,解决了。该项目与我沟通的老师把账号密码弄错了。
下面是测试代码。
# -*- coding: utf-8 -*-
import urllib
import urllib2
import hashlib
url_time = 'http://dxpt.cic.tsinghua.edu.cn/gettimestamp.jsp'
url_sms ='http://dxpt.cic.tsinghua.edu.cn/sendsms.jsp'
timestamp = urllib.urlopen(url_time)
timestamp =timestamp.read()
appid='XXXXXX'
appkey='xxxxxxxxx'
token_s=timestamp+":"+appkey+":"+appid
print token_s
token =hashlib.sha1(token_s).hexdigest()
data={
"destSmsNumbers":"185XXXX4581",
"appId":appid,
"timeMillisString":timestamp,
"token":token
}
data["smsContent"]=u"短信平台测试!".encode("gbk")
data_urlencode = urllib.urlencode(data)
print data_urlencode
url_sms = url_sms+"?destSmsNumbers=185xxxx4581&appId=XXXXXX&timeMillisString="+timestamp+"&token="+token
req = urllib2.Request(url = url_sms,data =data_urlencode)
print req
res_data = urllib2.urlopen(req)
res_data = urllib.urlopen(url = url_sms,data =data_urlencode)
res = res_data.read()
print res