'Read the data and finish when the reply finished.
Args:
reply: The QNetworkReply which finished.'

def on_reply_finished(self, reply):

    timer = self._timers.pop(reply)
    if (timer is not None):
        timer.stop()
        timer.deleteLater()
    if (reply.error() != QNetworkReply.NoError):
        self.error.emit(reply.errorString())
        return
    try:
        data = bytes(reply.readAll()).decode('utf-8')
    except UnicodeDecodeError:
        self.error.emit('Invalid    UTF-8    data    received    in    reply!')
        return
    self.success.emit(data)
