Terminado

Alteração de função get usando Qt (C+

Publicado el 24 Octubre, 2016 en Programación y Tecnología

Sobre este proyecto

Abierto

Tenho duas funções (get e post) em um projeto de dll no qt e quero altera-las.

Hoje elas usam a classe QEventLoop para controle da resposta e do timeout e isso tem ocasionado alguns travamentos então quero uma nova abordagem.

Abaixo esta o código a ser alterado.

QByteArray Request::get(
        const QString request,
        const uint32_t timeoutMs,
        const QString authUser,
        const QString authPass,
        QMap<QString, QString> customHeaders)
{
    QNetworkAccessManager manager;
    QTimer timer;
    timer.setSingleShot(true);

    QString auth = authUser + ":" + authPass;

    QEventLoop *loop = new QEventLoop();
    QNetworkRequest req;
    req.setRawHeader("Authorization", "Basic " + auth.toLocal8Bit().toBase64());
    for (QString headerName : customHeaders.keys()) {
        req.setRawHeader(headerName.toLocal8Bit(), customHeaders[headerName].toLocal8Bit());
    }
    req.setUrl(request);
    Qnetworkreply* reply = manager.get(req);
    loop->connect(reply, signal(finished()), slot(quit()));
    loop->connect(&timer, signal(timeout()), slot(quit()));
    timer.start(timeoutMs);
    loop->exec();

    if (timer.isActive()) {
        timer.stop();
        if (reply->error() != QNetworkReply::NoError) {
            throw NetworkException(reply->errorString().toStdString());
        }

        int rc = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
        if (rc >= 200 && rc < 300) {
            return reply->readAll();
        }
        throw NetworkException("HTTP return code = " + QString::number(rc).toStdString());
    } else {
        throw NetworkException("Request timed out");
    }

    return QByteArray("");
}

Categoría Programación y Tecnología
Subcategoría Aplicaciones de escritorio
¿Cuál es el alcance del proyecto? Bug o cambio pequeño
¿Es un proyecto o una posición? Un proyecto
Actualmente tengo Tengo las especificaciones
Disponibilidad requerida Según se necesite
Experiencia en este tipo de proyectos Sí (He administrado este tipo de proyectos anteriormente)
Plataformas requeridas Windows

Plazo de Entrega: 25 Octubre, 2016

Habilidades necesarias

Otros proyectos publicados por W. L. L.