PyQt http Post 请求数据

import json
import sys
from PyQt5.QtCore import QObject, QUrl, QByteArray
from PyQt5.QtNetwork import QNetworkAccessManager,QNetworkRequest

class HttpReq(QObject):

    def __init__(self):
        QObject.__init__(self)
        self.onSuccess = None
        self.onFailed = None
        self.m_netAccessManager = QNetworkAccessManager(self)
        self.m_netReply = None


    def request(self,httpUrl,sendData,on_success,on_fail):

        if self.m_netReply is not None:
            self.m_netReply.disconnect()

        self.onSuccess = on_success
        self.onFailed = on_fail
        self.onJsonParams = jsonParams

        req = QNetworkRequest(QUrl(httpUrl))
        req.setHeader(QNetworkRequest.ContentTypeHeader,"application/x-www-form-urlencoded")

        senda = QByteArray()
        senda.append(self.convertDict(sendData))
        print("="*200)
        print("url:",httpUrl)
        print("data:",sendData)
        print("=" * 200)
        self.m_netReply = self.m_netAccessManager.post(req,senda)
        self.m_netReply.readyRead.connect(self.readData)
        self.m_netReply.error.connect(self.requesterr)


    def readData(self):

        recvData = self.m_netReply.readAll()
        print(recvData)
        data = str(bytes(recvData.data()), encoding="utf-8")

        try:
            result = json.loads(data)   
			self.onSuccess(result)                
        except Exception as err:
            self.onFailed(err)



    def requesterr(self,err):
        print(err)

    def convertDict(self,dict):
        print(dict)
        str = ""
        index = 1
        for key,value in dict.items():
            if index == len(dict):
                str = str + '%s%s%s' % (key, '=', value)
            else:
                str = str + '%s%s%s%s' % (key, '=', value,'&')

            index += 1
        print(str)
        return str



if __name__ == '__main__':
    from PyQt5.QtWidgets import QApplication

    app = QApplication(sys.argv)
    http = HttpReq()
    def onSucc(data):
        print("succc",data)

    def onFail(data):
        print("fail",data)
    data = {"account":"tester11","password":"12113456"}
    http.convertDict(data)
    http.request("http://www.xxxxx.com/api/account/login",data,onSucc,onFail)
    app.exec_()



猜你喜欢

转载自blog.csdn.net/xzpblog/article/details/79049408