J'essaye d'écrire une sorte de client API pour l'application basée sur PyQt4. Et, après this documentation je l'ai écrit ce code:QNetworkReply provoque segfault
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()
Le premier problème est - aucun des signaux (processResponse
, processError
) est appelé (même si je déclare la connexion avec self.connect(.., SIGNAL(..), ..)
). Le deuxième problème est que ce code provoque une erreur de segmentation sur la dernière ligne, lorsque j'appelle la méthode isFinished
. Si j'appelle cette méthode dans la méthode API, cela fonctionne correctement.
Je pensais que la cause est que reply
objet ou obtenir en quelque sorte supprimé les déchets collectés, donc je l'ai écrit la deuxième version de authenticate
méthode avec explicite reply
lier à la variable objet. Cela provoque aussi la segfault.
Quel est le problème avec mon code?