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

Terminado

Publicado: Hace 6 meses Plazo: 1 día Propuestas: 2 Freelancers interesados: 2

Abierto

Descripción:

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 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 return reply->readAll();
}
throw NetworkException("HTTP return code = " + QString::number(rc).toStdString());
} else {
throw NetworkException("Request timed out");
}

return QByteArray("");
}

Categoria: IT & Programação
Subcategoria: Desktop Applications
Qual é o alcance do projeto?: Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho?: Um projeto
Tenho, atualmente: Eu tenho especificações
Experiência nesse tipo de projeto: Sim (Eu já gerenciei esse tipo de projeto)
Disponibilidade requerida: Conforme necessário
Plataformas exigidas: Windows

Crea tu propio proyecto

¿Buscas un freelancer para realizar un proyecto similar? Crea tu propio proyecto y recibirás ofertas de los mejores freelancers.

Brasil

Método de pago: Verificado

Para ver más detalles del cliente

Ingresa a Workana

Compartir este proyecto