title: 清華大學(xué)短信平臺接口使用
date: 2018-03-19 13:30:08
tags: [python,web2py,sms,requests]
需求
項目需要將課酬的發(fā)放信息短信告知教師,所以直接使用了清華校內(nèi)的短信平臺瓜贾,接口描述文檔及其簡約吨灭。因為之前做了微信公眾號的接口瞬痘,算是有了經(jīng)驗逗鸣,開發(fā)很快贞让。
短信平臺接口說明
接口采用HTTP方式
域名:http://dxpt.cic.tsinghua.edu.cn/
需要從短信平臺管理員處獲得短信平臺的appid和appkey
第一步:
使用Get方式乍构,從http://dxpt.cic.tsinghua.edu.cn/gettimestamp.jsp獲取時間戳
第二步
使用Post方式甜无,調(diào)用http://dxpt.cic.tsinghua.edu.cn/sendsms.jsp?destSmsNumbers={發(fā)送號碼,分割}&appId={短信平臺的appid}&timeMillisString={t}&token={token}
POST參數(shù):smsContent=urlencode后的短信內(nèi)容,中文采用gbk編碼
t為第一步獲取的時間戳
token為sha1(“t:appkey:appid”) (可以使用baseclass中的org.thcic.crypt.Digest.SHA函數(shù)生成)
實戰(zhàn)
然而哥遮,一切都逃不出這個然而岂丘,短信一直沒有發(fā)送成功。平臺那邊交流很復(fù)雜眠饮,接電話的不懂技術(shù)奥帘,只能郵件溝通。
萬幸仪召,解決了寨蹋。該項目與我溝通的老師把賬號密碼弄錯了松蒜。
下面是測試代碼。
# -*- 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