1、目的
通过模拟接口方法,实现批量用户开通
2、分析
A、接口含body和head部分,其中body中的某些变量为必填字段,包含用户的信息。
B、用户信息清单可以整理成ott_after_check_device文件。
C、将ott_after_check_device文件转换成列表数据类型,将其用户信息对应替换到body.xml文件中。
3、脚本实现
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import requests 5 from requests_toolbelt.multipart.encoder import MultipartEncoder 6 7 def get_txt_after_check_device(): 8 ott_after_check_device = '.\ott_after_check_device.txt' 9 f = open(ott_after_check_device) 10 lines = f.readlines() 11 all_list_device = [] 12 for line in lines: 13 line = line.replace(" ", '') 14 list_device = line.split(',') 15 all_list_device.append(list_device) 16 return all_list_device 17 18 19 def ott_boss(list_device): 20 sleep_time = 0.001 21 # print len(list_device) 22 for i in range(len(list_device)): 23 print u'新开户数 :', i + 1 24 time.sleep(sleep_time) 25 acc_num = list_device[i][0] 26 stb_id = list_device[i][1] 27 print 'STBID : ', stb_id 28 account = list_device[i][2] 29 url = 'http://10.2.214.133:6600/oss/rest/mango/bossManagement/syncOrder' 30 mul = MultipartEncoder( 31 fields={ 32 'xmlhead': '<?xml version="1.0" encoding="UTF-8"?> <InterBOSS>' 33 '<Version>0100</Version>' 34 '<TestFlag>0</TestFlag>' 35 '<BIPType>' 36 '<BIPCode>IPTVB412</BIPCode>' 37 '<ActivityCode>T2101057</ActivityCode>' 38 '<ActionCode>0</ActionCode>' 39 '</BIPType>' 40 '<RoutingInfo>' 41 '<OrigDomain>BOSS</OrigDomain>' 42 '<RouteType>00</RouteType>' 43 '<Routing>' 44 '<HomeDomain>OTT</HomeDomain>' 45 '<RouteValue>210</RouteValue>' 46 '</Routing>' 47 '</RoutingInfo>' 48 '<TransInfo>' 49 '<SessionID>2018092517323481311686</SessionID>' 50 '<TransIDO>2018092517323416388122</TransIDO>' 51 '<TransIDOTime>20180211173234</TransIDOTime>' 52 '</TransInfo> </InterBOSS>', 53 'xmlbody': '<?xml version="1.0" encoding="UTF-8"?> <InterBOSS> <SvcCont><![CDATA[<?xml ' 54 'version="1.0" encoding="UTF-8"?> <OrdSynReq>' 55 '<PkgSeq>73120180111000007</PkgSeq>' 56 '<RecNum>1</RecNum>' 57 '<UD1>' 58 '<IDType>01</IDType>' 59 '<IDV>%s</IDV>' 60 '<Brand>09</Brand>' 61 '<Opr>06</Opr>' 62 '<OprT>20180925171922</OprT>' 63 '<BizType>52</BizType>' 64 '<Seq>8121</Seq>' 65 '<BroadbandID>738815023717</BroadbandID>' 66 '<ZipCode></ZipCode>' 67 '<Address></Address>' 68 '<UserName></UserName>' 69 '<UserSex></UserSex>' 70 '<IDCardType></IDCardType>' 71 '<IDCardNum></IDCardNum>' 72 '<AreaCode>K381</AreaCode>' 73 '<GroupID></GroupID>' 74 '<POCont>' 75 '<ActType>1</ActType>' 76 '<StbID>%s</StbID>' 77 '<Account>%s</Account>' 78 '<Password>111111</Password>' 79 '<ChrgType>2</ChrgType>' 80 '<EffetiTime>20180925171922</EffetiTime>' 81 '<Channel>08</Channel>' 82 '<SPID>mango</SPID>' 83 '<BizCode>defaultBasicProduct</BizCode>' 84 '<BizKind>01</BizKind>' 85 '</POCont>' 86 '</UD1> </OrdSynReq> ' 87 ']]></SvcCont> </InterBOSS>' % (acc_num, stb_id, account) 88 } 89 ) 90 header = {'Content-Type': mul.content_type} 91 body = mul 92 response = requests.post(url, data=body, headers=header) 93 print response.content 94 print response.status_code 95 96 97 if __name__ == '__main__': 98 ott_boss(get_txt_after_check_device())