繁体   English   中英

QNetworkReply导致段错误

[英]QNetworkReply causes segfault

我正在尝试为基于PyQt4的应用程序编写某种API客户端。 并且,按照此文档,我编写了以下代码:

from PyQt4 import QtCore, QtNetwork


class API(QtCore.QObject):
    def processResponse(self, response):
        print 'response'
        response.deleteLater()

    def processError(self, error):
        print 'error'

    def authenticate(self, authUrl, login, password):
        manager = QtNetwork.QNetworkAccessManager()
        request = QtNetwork.QNetworkRequest(QtCore.QUrl(authUrl))
        reply = manager.get(request)
        reply.error.connect(self.processError)
        reply.finished.connect(self.processResponse)
        return reply

    def authenticate2(self, authUrl, login, password):
        manager = QtNetwork.QNetworkAccessManager()
        request = QtNetwork.QNetworkRequest(QtCore.QUrl(authUrl))
        self.reply = manager.get(request)
        self.reply.error.connect(self.processError)
        self.reply.finished.connect(self.processResponse)
        return self.reply


p = API()
z = p.authenticate('http://dev.dentv.ru/edda/v1/token/', 'test', 'test')
print z
print z.isFinished()

第一个问题是-没有信号( processResponseprocessError )被调用(即使我声明了具有self.connect(.., SIGNAL(..), ..) )。 第二个问题是,当我调用isFinished方法时,此代码在最后一行导致段错误。 如果我在API方法中调用此方法,它将正常工作。

我当时在想,原因是reply对象被垃圾回收或以某种方式删除了,所以我写了第二版的authenticate方法,其中显式reply绑定到对象变量。 它也会导致段错误。

我的代码有什么问题?

我是个白痴 :(

通过将manager绑定到对象变量,而不是reply ,解决了该问题。 经理被垃圾收集了(或类似的东西)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM