您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python怎么實現Requests發送帶cookies的請求的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
最近學習接口自動化教程,提到Requests發送帶cookies請求的方法,隨之也將其用于手頭實際項目中,大致如下
實際需求是監控平臺側下發消息有無異常,如有異常便觸發報警推送郵件,項目中下發消息接口需要帶cookies
腳本的工程名為ynJxhdSendMsg,大致結構如下圖
sendMsg.py為主程序,函數checkMsg為在已發消息列表中查找已下發消息,函數sendMsg為發消息并根據結果返回對應的標識
sendAlertEmail.py為發送郵件程序,在sendMsg.py中根據不同標識調用sendAlertEmail.py下的send_alert_email函數發報警郵件
【重點】發請求之前先加載cookies,方法如下
~ ...... ~ # 加載cookies # 第一步,引入RequestsCookieJar() coo = requests.cookies.RequestsCookieJar() # 第二步,設置cookies參數,coo.set('key', 'value') coo.set('__utma', '82342229.1946326147.***.1545556722.1545556733.4') coo.set('JSESSIONID', 'D898010550***ADB0600BF31FF') # 第三步,引入seeeion(),并update sess = requests.session() sess.cookies.update(coo) ~ ...... ~
sendMsg.py
發送帶當前時間戳的特定消息,在發送成功后便于通過時間戳檢索
函數checkMsg為在已發消息列表中查找已下發消息
函數sendMsg為發消息并根據結果返回對應的標識
導入sendAlertEmail模塊的send_alert_email方法,在sendMsg.py中根據不同標識調用send_alert_email函數發報警郵件
#!/usr/bin/python # coding=utf-8 # author: 葛木瓜 # 2018.12.20 import requests import time import re import sys sys.path.append('./') from sendAlertEmail import send_alert_email now = time.strftime('%Y.%m.%d %H:%M:%S') # 獲取當前時間 sendMsg_url = 'http://*.*.*.*/interactive/sendMessage.action' msgList_url = 'http://*.*.*.*/interactive/sendedMessageList.action' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0', 'Content-Type': 'application/x-www-form-urlencoded' } payload = { 'showFlag': '0', 'type': '1', 'fsnl': 'on', 'receiversId_': '63110542', 'receiveName': '9705家長;', 'content': 'Test msg sending,time ' + now, 'templateType': '1', 'addTeachername': '0', 'isGreed': '0', 'send': '1', 'startDayTime': '2018-12-20', 'hourss': '22', 'munit': '29', 'selectRole': '2', 'receiversIds': '63110542', 'templateFlag': '0' } # 加載cookies coo = requests.cookies.RequestsCookieJar() coo.set('__utma', '82342229.1946326147.***.1545556722.1545556733.4') coo.set('JSESSIONID', 'D898010550***ADB0600BF31FF') sess = requests.session() sess.cookies.update(coo) def checkMsg(): """ 在已發送短信列表檢查已發送短信 :return: """ i = 1 while True: try: cm_resp = sess.get(msgList_url, headers=headers, allow_redirects=False) except Exception as e: return str(e) else: time.sleep(1) cm_key = re.findall('Test msg sending,time33 ' + now, cm_resp.text) i += 1 if i <= 30: if len(cm_key): break else: cm_key = ['More than 30 times,no result'] break print('Request %d times' % i) return cm_key def sendMsg(): """ send message :return: """ try: resp = sess.post(sendMsg_url, headers=headers, data=payload, allow_redirects=False) except Exception as e: return str(e) else: if resp.status_code == 200: key = re.findall('通知發送已成功', resp.text) cm_key = checkMsg() # print(key, cm_key) if len(key) and len(cm_key): if cm_key[0] == 'Test msg sending,time ' + now: return 200 elif cm_key[0] == 'More than 30 times,no result': return 'More than 30 times,no result' else: # print('Check Msg connect fail:' + str(cm_key)) return 'Check Msg connect fail: ' + cm_key elif resp.status_code == 302: return 302 else: return resp.status_code if __name__ == '__main__': receiver = ['**@***.com'] # 收件人郵件列表 status = sendMsg() print(status) if status == 200: alert_content = "normal" print('Test Success!') elif status == 'More than 30 times,no result': alert_content = "短信已發送,查詢已發狀態失敗!" elif 'Check Msg connect fail:' in str(status): alert_content = "短信已發送,無法查詢已發狀態,報錯信息:%s" % status.split(':')[-1] elif status == 302: alert_content = "Session失效,請重新獲取'JSESSIONID'!" else: alert_content = "短信下發失敗,報錯信息:%s" % status if alert_content != "normal": send_alert_email(receiver, alert_content)
sendAlertEmail.py,方法較常見,此處略
完成以上,將腳本放在jenkins上定時構建,即可實現實時監控平臺側消息下發情況并及時反饋報警郵件的需求
感謝各位的閱讀!關于“python怎么實現Requests發送帶cookies的請求”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。