Сбой QNetworkRequest с большим заголовком, безопасностью ssl и аутентификацией - PullRequest
0 голосов
/ 10 декабря 2011

Я пытаюсь отправить JSON с QNetworkRequest через соединение https с аутентификацией. Все работает нормально, если либо
1. Размер заголовка очень маленький
2. Нет аутентификации

Мой веб-сервер - JBoss 4.2.3 (я не могу обновить, потому что я использую dcm4che ), а моя версия Qt - 4.7. Вот пример кода, который работает для меня.

QVariantMap data;
QString query = "SELECT patient.pat_name FROM patient";
data["action"] = "get.worklist";
data["sql"] = query;
bool success;
// I'm using the QtJson project, which seems to work fine
QByteArray jsonData = QtJson::Json::serialize(data);
if (!success) {
    QString err = "There was a serialization error";
}
QUrl url(/*a valid URL*/);
url.setUserName(/*user*/);
url.setPassword(/*password*/);
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setHeader(QNetworkRequest::ContentLengthHeader, jsonData.size());
request.setRawHeader("params-json", jsonData);

reply = manager.get(request);
connect(reply, SIGNAL(finished()), SLOT(httpFinished()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(httpError(QNetworkReply::NetworkError)));

void ServletConnection::sslErrors(QNetworkReply *reply,const QList<QSslError> &errors) {
    // There were ssl errors
    reply->ignoreSslErrors();
}

void ServletConnection::httpFinished() {
    QString error = reply->errorString();
    int e = reply->error();
    reply->deleteLater();
}

Если я изменю запрос на более длинное значение, например «SELECT Patient.Pat_Name, Patient.Pat_birthdate FROM пациента», то я получаю сообщение об ошибке.
Error string = "Ошибка загрузки URL - сервер ответил: версия HTTP не поддерживается"
Номер ошибки = 301 - QNetworkReply :: ProtocolUnknownError
Однако если я удаляю аутентификацию с веб-сервера (и оставляю https), то все работает нормально, независимо от длины строки запроса.

Любая помощь?

1 Ответ

1 голос
/ 10 декабря 2011

Я понял, как это сделать.Я изменил свою запись и теперь могу успешно опубликовать любое количество данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...