Невозможно войти через qtnetworkaccessmanager, но можно использовать инструмент почтальона - PullRequest
0 голосов
/ 14 октября 2019

Я использую qnetworkaccessmanager для входа на веб-сайт, я задаю имя пользователя и пароль в rowHeader, но получаю пустой ответ в коде, но тот же запрос с именем пользователя и паролем, заданным в заголовке, работает должным образом с помощью инструмента Postman, может кто-нибудь подсказать, что можетбыть проблемой?

QString user = "user";
QString pass = "testPassword";
QByteArray data1 = user.toLocal8Bit().toBase64();
QByteArray data2 = pass.toLocal8Bit().toBase64();
QNetworkRequest request = QNetworkRequest(QUrl("http://server_address/b1/login"));

request.setRawHeader("user", data1);
request.setRawHeader("password", data2);

QNetworkReply *reply = manager->get(request);

и я получаю ответ, используя следующий код -

manager = new QNetworkAccessManager();
QObject::connect(manager, &QNetworkAccessManager::finished,
this, [=](QNetworkReply *reply) {
if (reply->error()) {
qDebug() << reply->errorString();
return;
}

    QString answer = QString::fromUtf8(reply->readAll());
    qDebug() << answer;

    bool isFinished = reply->isFinished();
    bool isRunning = reply->isRunning();
    QNetworkReply::NetworkError err = reply->error();
QByteArray bts = reply->readAll();
QString str(bts);
qDebug() << str;

Ниже приведен скриншот почтальона с заголовками

Postman image

1 Ответ

0 голосов
/ 15 октября 2019
QString user = "testUser"; // Use same "user" value as you used in your Postman example
QString pass = "testPassword";
QByteArray data1 = user.toLocal8Bit(); // Remove toBase64()
QByteArray data2 = pass.toLocal8Bit(); // Remove toBase64()
QNetworkRequest request = QNetworkRequest(QUrl("http://server_address/b1/login"));

request.setRawHeader("user", data1);
request.setRawHeader("password", data2);

QNetworkReply *reply = manager->get(request);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...