python demo

python 3

import hashlib
import sys
from urllib import request, parse
import json

'''
    1、Python运行版本:Python 3.6.6
    2、运行此程序需要依赖模块urllib,安装方法如下:
     pip install urllib
     pip install request
'''

encoding = 'utf-8'
if encoding != sys.getdefaultencoding():
    reload(sys)
    sys.setdefaultencoding(encoding)


class HttpMessage(object):

    def __init__(self, Url, userId, md5password, action=None):
        self.Url = Url
        self.userId = userId
        self.md5password = self.GenerateMD5(md5password)
        self.action = action

    def GetReport(self):
        '''
        获取状态报告
        :return:
        '''
        return self.OtherSendGet()

    def GetMo(self):
        '''
        获取上行
        :return:
        '''
        return self.OtherSendGet()

    def GetBalance(self):
        '''
        获取余额
        :return:
        '''
        return self.OtherSendGet()

    def OtherSendGet(self):
        requestUrl = self.Url + '/websms/smsJsonService'
        requestParams = 'action={action}&userId={userId}&md5password={md5password}'.format(
            action=self.action,
            userId=self.userId,
            md5password=self.md5password,
        )
        return self.SendGet(requestUrl, requestParams)

    def ContentsToPhones(self, contentArr):
        """
        包装多内容下发不同号码的函数
        :param contentArr:
        :return:字典类型
        """
        requestUrl = self.Url + '/batchwebsms/smsJsonService'
        ParamsDict = {'userId': self.userId, 'md5password': self.md5password,
                      'contentArr': json.dumps(contentArr)}
        return self.SendPost(requestUrl, ParamsDict)

    def ContentArrHandler(self, content, mobile, msgId=None, extCode=None):
        '''
        处理点对点的内容
        :param content:短信内容
        :param mobile:手机号
        :param msgId:消息ID
        :param extCode:扩展码
        :return:字典类型
        '''
        dataDict = {
            'content': content,
            'mobile': mobile,
        }
        if msgId != None:
            dataDict['msgId'] = msgId

        if extCode != None:
            dataDict['extCode'] = extCode
        return dataDict

    def GenerateMD5(self, password):
        '''
        生成MD5值
        :param password:传输的明文
        :return:
        '''
        md5Obj = hashlib.md5()
        md5Obj.update(password.encode('UTF-8'))
        return md5Obj.hexdigest()

    def OneContentToPhones(self, content=None, mobile=None, msgId=None, extCode=None):
        '''
        单内容多号码批量发送,即群发
        :param content:短信内容
        :param mobile:手机号码
        :param msgId:消息ID
        :param extCode:扩展码
        :return:发送的返回值
        '''
        requestUrl = self.Url + '/websms/smsJsonService'

        if self.action and self.action == 'sendsms':
            dataDict = {'action': self.action, 'userId': self.userId, 'md5password': self.md5password,
                        'content': content, 'mobile': mobile}
            if msgId != None:
                dataDict['msgId'] = msgId
            if extCode != None:
                dataDict['extCode'] = extCode
            return self.SendPost(requestUrl, dataDict)
        else:
            print('缺少action参数,HttpMessage类实例化参数为:action=\'sendsms\'')

    def isSSL(self, strData):
        '''
        判断是否是https的接口
        :param strData:需要判断的URL地址
        :return:
        '''
        context = None
        if strData.startswith('https://'):
            import ssl
            context = ssl._create_unverified_context()
        return context

    def SendPost(self, sendUrl, Data):
        '''
        采用Post请求
        :param sendUrl:接口地址
        :param data:需要发送的数据包
        :return:
        '''
        if Data != None:
            paramsList = []
            for paramsKey, sparamsValue in Data.items():
                paramsList.append((paramsKey, sparamsValue))
            sendBody = parse.urlencode(paramsList)

            reqObj = request.Request(sendUrl)
            reqObj.add_header('Content-Type', 'application/x-www-form-urlencoded')

            with request.urlopen(reqObj, data=sendBody.encode('utf-8'), context=self.isSSL(sendUrl)) as cnameReq:
                if cnameReq.status == 200:
                    return cnameReq.read().decode('utf-8')
                else:
                    return 'Http Send Error Code %s' % cnameReq.status
        else:
            return 'Send RequestParams Body Is None'

    def SendGet(self, sendUrl, Params):
        '''
        采用Get请求
        :param sendUrl:
        :param Params:
        :return:
        '''
        reqObj = request.Request(sendUrl + '?' + Params)
        with request.urlopen(reqObj, context=self.isSSL(sendUrl)) as cnameReq:
            if cnameReq.status == 200:
                return cnameReq.read().decode('utf-8')
            else:
                return 'Send Fail Error Code:%s' % cnameReq.status


if __name__ == '__main__':
    # 请求的URL
    Url = 'http://192.168.1.21:8088'
    # 接口帐号
    userId = 'xll123'
    # 接口密码
    md5password = '123456'

    # 单内容多号码批量发送
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='sendsms')
    # result = sendSmsObj.OneContentToPhones('【签名1】内%容1', '188888888x1', extCode=None, msgId=None)
    # print(result)

    # 多内容打包发送
    # sendSmsObj = HttpMessage(Url, userId, md5password)
    # sendSmsList = []
    # sendSmsList.append(sendSmsObj.ContentArrHandler('【签名1】内容1', '188888888x1'))
    # sendSmsList.append(sendSmsObj.ContentArrHandler('【签名2】内容2', '188888888x2'))
    # print(sendSmsObj.ContentsToPhones(sendSmsList))

    # 余额查询
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='getbalance')
    # result = sendSmsObj.GetBalance()
    # print(result)

    # 获取短信状态反馈
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='getsendreport')
    # result = sendSmsObj.GetReport()
    # print(result)

    # 获取短信上行
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='getdeliver')
    # result = sendSmsObj.GetReport()
    # print(result)

python 2

import hashlib
import sys
import json
import urllib2
import urllib

'''
    1、Python运行版本:Python 2.7
    2、运行此程序需要依赖模块urllib,安装方法如下:
     pip install urllib
     pip install urllib2
'''

# Python2 中文兼容问题解决
encoding = 'utf-8'
if encoding != sys.getdefaultencoding():
    reload(sys)
    sys.setdefaultencoding(encoding)


class HttpMessage(object):

    def __init__(self, Url, userId, md5password, action=None):
        self.Url = Url
        self.userId = userId
        self.md5password = self.GenerateMD5(md5password)
        self.action = action

    def GetReport(self):
        '''
        获取状态报告
        :return:
        '''
        return self.OtherSendGet()

    def GetMo(self):
        '''
        获取上行
        :return:
        '''
        return self.OtherSendGet()

    def GetBalance(self):
        '''
        获取余额
        :return:
        '''
        return self.OtherSendGet()

    def OtherSendGet(self):
        requestUrl = self.Url + '/websms/smsJsonService'
        requestParams = 'action={action}&userId={userId}&md5password={md5password}'.format(
            action=self.action,
            userId=self.userId,
            md5password=self.md5password,
        )
        return self.SendGet(requestUrl, requestParams)

    def ContentsToPhones(self, contentArr):
        """
        包装多内容下发不同号码的函数
        :param contentArr:
        :return:字典类型
        """
        requestUrl = self.Url + '/batchwebsms/smsJsonService'
        ParamsDict = {'userId': self.userId, 'md5password': self.md5password,
                      'contentArr': json.dumps(contentArr)}
        return self.SendPost(requestUrl, ParamsDict)

    def ContentArrHandler(self, content, mobile, msgId=None, extCode=None):
        '''
        处理点对点的内容
        :param content:短信内容
        :param mobile:手机号
        :param msgId:消息ID
        :param extCode:扩展码
        :return:字典类型
        '''
        dataDict = {
            'content': content,
            'mobile': mobile,
        }
        if msgId != None:
            dataDict['msgId'] = msgId

        if extCode != None:
            dataDict['extCode'] = extCode
        return dataDict

    def GenerateMD5(self, password):
        '''
        生成MD5值
        :param password:传输的明文
        :return:
        '''
        md5Obj = hashlib.md5()
        md5Obj.update(password.encode('UTF-8'))
        return md5Obj.hexdigest()

    def OneContentToPhones(self, content=None, mobile=None, msgId=None, extCode=None):
        '''
        单内容多号码批量发送,即群发
        :param content:短信内容
        :param mobile:手机号码
        :param msgId:消息ID
        :param extCode:扩展码
        :return:发送的返回值
        '''
        requestUrl = self.Url + '/websms/smsJsonService'

        if self.action and self.action == 'sendsms':
            dataDict = {'action': self.action, 'userId': self.userId, 'md5password': self.md5password,
                        'content': content, 'mobile': mobile}
            if msgId != None:
                dataDict['msgId'] = msgId
            if extCode != None:
                dataDict['extCode'] = extCode
            return self.SendPost(requestUrl, dataDict)
        else:
            print('缺少action参数,HttpMessage类实例化参数为:action=\'sendsms\'')

    def isSSL(self, strData):
        '''
        判断是否是https的接口
        :param strData:需要判断的URL地址
        :return:
        '''
        context = None
        if strData.startswith('https://'):
            import ssl
            context = ssl._create_unverified_context()
        return context

    def SendPost(self, sendUrl, Data):
        '''
        采用Post请求
        :param sendUrl:接口地址
        :param data:需要发送的数据包
        :return:
        '''
        if Data != None:
            paramsList = []
            for paramsKey, sparamsValue in Data.items():
                paramsList.append((paramsKey, sparamsValue))
            sendBody = urllib.urlencode(paramsList)

            reqObj = urllib2.Request(sendUrl)
            reqObj.add_header('Content-Type', 'application/x-www-form-urlencoded')

            cnameReq = urllib2.urlopen(reqObj, data=sendBody.encode('utf-8'), context=self.isSSL(sendUrl))
            if cnameReq.code == 200:
                return cnameReq.read().decode('utf-8')
            else:
                return 'Http Send Error Code %s' % cnameReq.status
        else:
            return 'Send RequestParams Body Is None'

    def SendGet(self, sendUrl, Params):
        '''
        采用Get请求
        :param sendUrl:
        :param Params:
        :return:
        '''
        cnameReq = urllib2.urlopen(sendUrl + '?' + Params, context=self.isSSL(sendUrl))
        if cnameReq.code == 200:
            return cnameReq.read().decode('utf-8')
        else:
            return 'Send Fail Error Code:%s' % cnameReq.status


if __name__ == '__main__':
    # 请求的URL
    Url = 'http://58.250.192.xxx:8088'
    # 接口帐号
    userId = 'xxxx'
    # 接口密码
    md5password = 'xxxx'

    # 单内容多号码批量发送
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='sendsms')
    # result = sendSmsObj.OneContentToPhones('【签名1】内容1', '188888888x1', extCode=None, msgId=None)
    # print result

    # 多内容打包发送
    # sendSmsObj = HttpMessage(Url, userId, md5password)
    # sendSmsList = []
    # sendSmsList.append(sendSmsObj.ContentArrHandler('【签名1】内容1', '188888888x1'))
    # sendSmsList.append(sendSmsObj.ContentArrHandler('【签名2】内容2', '188888888x2'))
    # print sendSmsObj.ContentsToPhones(sendSmsList)

    # 余额查询
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='getbalance')
    # result = sendSmsObj.GetBalance()
    # print result

    # 获取短信状态反馈
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='getsendreport')
    # result = sendSmsObj.GetReport()
    # print result

    # 获取短信上行
    # sendSmsObj = HttpMessage(Url, userId, md5password, action='getdeliver')
    # result = sendSmsObj.GetReport()
    # print result

results matching ""

    No results matching ""