python requests登录_Python requests模拟登录

1 #!/usr/bin/python

2 #-*-coding:utf-8-*-

3 from PyQt4.QtGui import *

4 from PyQt4.QtCore import *

5 importrequests, sys6

7 reload(sys)8 sys.setdefaultencoding("utf-8")9

10 #主入口文件

11 classMainWidget(QDialog):12 def __init__(self, parent=None):13 super(MainWidget, self).__init__(parent)14 self.setMinimumSize(100, 100)15 self.setWindowFlags(Qt.CustomizeWindowHint |Qt.WindowCloseButtonHint)16 self.setWindowOpacity(0.7)17

18 #URL

19 self.urllabel = QLabel(u'提交URL:')20 self.url = QLineEdit(u'')21 self.methodtype =QComboBox()22 self.methodtype.addItem('POST')23 self.methodtype.addItem('GET')24 self.UrlLoayout =QHBoxLayout()25 self.UrlLoayout.addWidget(self.urllabel)26 self.UrlLoayout.addWidget(self.url)27 self.UrlLoayout.addSpacing(20) #添加一个20px的空间距离 且不带弹性

28 self.UrlLoayout.addWidget(self.methodtype)29

30 #添加头部group

31 self.headDict ={}32 self.headPostArrayKey =033 self.HeadGroupBox = QGroupBox(u'头部数据')34 self.HeadGroupBox.setMinimumHeight(200) #高度最小值

35

36 self.HeadAddParam = QPushButton(u'+')37 self.headDict[str(self.headPostArrayKey) + '_key'] =QLineEdit()38 self.headDict[str(self.headPostArrayKey) + '_value'] =QLineEdit()39 self.HeadGroupBoxLayout =QGridLayout()40 self.HeadGroupBoxLayout.addWidget(self.HeadAddParam, 0, 0)41 self.HeadGroupBoxLayout.addWidget(QLabel(u'Key:'), 1, 0)42 self.HeadGroupBoxLayout.addWidget(self.headDict[str(self.headPostArrayKey) + '_key'], 1, 1)43 self.HeadGroupBoxLayout.addWidget(QLabel(u'Value:'), 1, 2)44 self.HeadGroupBoxLayout.addWidget(self.headDict[str(self.headPostArrayKey) + '_value'], 1, 3)45 self.HeadGroupBox.setLayout(self.HeadGroupBoxLayout)46 self.HeadAddParam.clicked.connect(self.addHeadParam)47

48 #添加Body group

49 self.bodyDict ={}50 self.bodyPostArrayKey =051 self.BodyGroupBox = QGroupBox(u'正文数据')52 self.BodyGroupBox.setMinimumHeight(200)53 self.BodyAddParam = QPushButton(u'+')54 self.bodyDict[str(self.bodyPostArrayKey) + '_key'] = QLineEdit(u'')55 self.bodyDict[str(self.bodyPostArrayKey) + '_value'] = QLineEdit(u'')56 self.BodyGroupBoxLayout =QGridLayout()57 self.BodyGroupBoxLayout.addWidget(self.BodyAddParam, 0, 0)58 self.BodyGroupBoxLayout.addWidget(QLabel(u'Key:'), 1, 0)59 self.BodyGroupBoxLayout.addWidget(self.bodyDict[str(self.bodyPostArrayKey) + '_key'], 1, 1)60 self.BodyGroupBoxLayout.addWidget(QLabel(u'Value:'), 1, 2)61 self.BodyGroupBoxLayout.addWidget(self.bodyDict[str(self.bodyPostArrayKey) + '_value'], 1, 3)62 self.BodyGroupBox.setLayout(self.BodyGroupBoxLayout)63 self.BodyAddParam.clicked.connect(self.addBodyParam)64

65 #提交按钮

66 self.btnPost = QPushButton(u'提交')67 self.postbtnLoayout =QHBoxLayout()68 self.postbtnLoayout.addStretch()69 self.postbtnLoayout.addWidget(self.btnPost)70

71

72 #Main布局

73 main_layout =QVBoxLayout()74 main_layout.addLayout(self.UrlLoayout)75 main_layout.addWidget(self.HeadGroupBox)76 main_layout.addWidget(self.BodyGroupBox) #addWidget 添加的是Qobject

77 main_layout.addLayout(self.postbtnLoayout) #addLayout 添加的是 Layout

78

79 main_layout.setSpacing(0)80 self.setLayout(main_layout)81 self.connect(self.btnPost, SIGNAL('clicked()'), self.postData)82

83 #发送数据

84 defpostData(self):85 self.headdictdata ={}86 self.bodydictdata ={}87 LOOPpar1 = {'1': self.headDict.items(), 2: self.bodyDict.items()}88 LOOPpar2 = {'1': self.headdictdata, 2: self.bodydictdata}89 for Looptype inLOOPpar1:90 for k, v inLOOPpar1[Looptype]:91 temp = k.split('_')92 if temp[1] == 'key':93 ifLOOPpar2[Looptype].has_key(temp[0]):94 LOOPpar2[Looptype][temp[0]]['key'] =str(v.text())95 else:96 LOOPpar2[Looptype][temp[0]] = {'key': str(v.text())}97

98 elif temp[1] == 'value':99 ifLOOPpar2[Looptype].has_key(temp[0]):100 LOOPpar2[Looptype][temp[0]]['value'] =str(v.text())101 else:102 LOOPpar2[Looptype][temp[0]] = {'value': str(v.text())}103

104 url =self.url.text()105 method =self.methodtype.currentText()106 if noturl:107 QMessageBox.warning(self, u'notice', 'URL must fill in', QMessageBox.Yes)108 self.url.cursor()109 returnFalse110 self.Theading = TheadingPost({'url': str(url), 'method': str(method), 'headdictdata': self.headdictdata,111 'bodydictdata': self.bodydictdata})112 self.connect(self.Theading, SIGNAL("updateresult"), self.updateResult) #创建一个信号,在线程状态结果时发射触发

113 self.Theading.start() #线程开始

114

115 defupdateResult(self, resdata):116 if resdata['status'] == 1:117 QMessageBox.about(self, u"返回数据", str(resdata['msg']))118 else:119 QMessageBox.warning(self, u'错误提示!', str(resdata['msg']), QMessageBox.Yes)120

121

122 #添加头部Data

123 defaddHeadParam(self):124 sts = str(self.headPostArrayKey + 1)125 self.headDict[sts + '_key'] =QLineEdit()126 self.headDict[sts + '_value'] =QLineEdit()127 self.HeadGroupBoxLayout.addWidget(QLabel(u'Key:'))128 self.HeadGroupBoxLayout.addWidget(self.headDict[sts + '_key'])129 self.HeadGroupBoxLayout.addWidget(QLabel(u'Value:'))130 self.HeadGroupBoxLayout.addWidget(self.headDict[sts + '_value'])131 self.headPostArrayKey += 1

132

133 #添加Body Data

134 defaddBodyParam(self):135 sts = str(self.bodyPostArrayKey + 1)136 self.bodyDict[sts + '_key'] =QLineEdit()137 self.bodyDict[sts + '_value'] =QLineEdit()138

139 self.BodyGroupBoxLayout.addWidget(QLabel(u'Key:'))140 self.BodyGroupBoxLayout.addWidget(self.bodyDict[sts + '_key'])141 self.BodyGroupBoxLayout.addWidget(QLabel(u'Value:'))142 self.BodyGroupBoxLayout.addWidget(self.bodyDict[sts + '_value'])143 self.bodyPostArrayKey += 1

144

145

146 #线程提交类

147 classTheadingPost(QThread):148 def __init__(self, dict):149 super(TheadingPost, self).__init__()150 self.dict =dict151

152 defrun(self):153 self.action = self.dict['url']154 self.headerdict = self.dict['headdictdata'].values()155 self.datadict = self.dict['bodydictdata'].values()156 self.header ={}157 for hv inself.headerdict:158 self.header[hv['key']] = hv['value']159 self.data ={}160 for dv inself.datadict:161 self.data[dv['key']] = dv['value']162 self.method = self.dict['method']163 result ={}164 result['status'] =0165 try:166 returndata =self.httpRequest(self.method, self.action, self.data)167 result['status'] = 1

168 result['msg'] =returndata169 exceptException, e:170 result['status'] = 2

171 result['msg'] =e172

173 self.emit(SIGNAL("updateresult"), result)174

175

176 def httpRequest(self, method, action, query=None):177 default_timeout = 10

178 if (method == 'GET'):179 print('sd')180 #url = action if (query == None) else (action + '?' + query)

181 connection = requests.get(action, headers=self.header, timeout=default_timeout, params=query)182 elif (method == 'POST'):183 connection =requests.post(184 action,185 data=query,186 headers=self.header,187 timeout=default_timeout188 )189 connection.encoding = "UTF-8"

190 returnconnection.text191

192

193 if __name__ == "__main__":194 app =QApplication(sys.argv)195 main_widget =MainWidget()196 main_widget.show()197 sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值