Ошибка сетевого сеанса с QNetworkAccessManager в Qt на устройстве Symbian

#http #qt #symbian #http-get #qnetworkaccessmanager

#http #qt #symbian #http-get #qnetworkaccessmanager

Вопрос:

Я пытаюсь выполнить httpget на мобильном устройстве Symbian в Qt 4.7.

Я тестировал программу в Windows и на эмуляторе Symbian, и они оба работают, но когда я пробую это на устройстве Symbian, я получаю ошибку:

Ошибка сетевого сеанса.

Когда я пытаюсь выполнить httpget через браузер на устройстве Symbian, это работает, и я вижу страницу.

Вот сетевой код:

     QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
    manager->get(QNetworkRequest(QUrl(Consts::webserviceURL   Consts::servletLogin   "?"
                                        Consts::username   "="   username   "amp;"
                                        Consts::password   "="   password)));
  

Вот готовый ответ:

 void LoginDialog::replyFinished(QNetworkReply* reply){
    qDebug() << "reply finished";

    if (reply->error()) {
          ui->lbl_loginerror->setText("server niet bereikbaar: "   reply->errorString());
          qDebug() << "server niet bereikbaar: " << reply->errorString();

    }
    else {
        ....
  

Вывод всего этого:

 [Qt Message] reply finished
[Qt Message] server niet bereikbaar:  "Network session error."
  
  • С подключением все в порядке: проверка браузера выполнена успешно
  • В коде нет ничего плохого: поскольку он работает на эмуляторе

Что я сделал не так?

Редактировать

Я также добавил сетевые сервисы в .pro файл:

 symbian {
    TARGET.UID3 = 0xeeb46dc7
    TARGET.CAPABILITY  = networkservices
    TARGET.EPOCSTACKSIZE = 0x14000
    TARGET.EPOCHEAPSIZE = 0x020000 0x800000
}
  

Ответ №1:

Я решил ее с помощью этого:

 QString DataConnector::get(QString path){
    QNetworkAccessManager NAManager;
    QUrl url (path);
    QNetworkRequest request(url);
    QNetworkReply *reply = NAManager.get(request);
    QEventLoop eventLoop;
    QObject::connect(reply, SIGNAL(finished()), amp;eventLoop, SLOT(quit()));
    eventLoop.exec();
    QString replyString = reply->readAll();
    return replyString;
}
  

И я добавил эту строку в symbian:{} раздел в .pro файле:

 symbian: {
    TARGET.CAPABILITY = "NetworkServices ReadUserData WriteUserData"
}