Symbian 设备上 Qt 中 QNetworkAccessManager 的网络会话错误

Posted

技术标签:

【中文标题】Symbian 设备上 Qt 中 QNetworkAccessManager 的网络会话错误【英文标题】:Network session error with QNetworkAccessManager in Qt on a Symbian device 【发布时间】:2011-03-14 11:24:35 【问题描述】:

我正在尝试在 Qt 4.7 中的 Symbian 移动设备上执行 httpget。

我在 Windows 和 Symbian 模拟器上测试了该程序,它们都可以工作,但是当我在 Symbian 设备上尝试时,我得到一个错误:

网络会话错误。

当我尝试通过 Symbian 设备中的浏览器执行 httpget 时,它可以工作,并且我看到了该页面。

这是网络代码:

    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 + "&"
                                      + 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()), &eventLoop, SLOT(quit()));
    eventLoop.exec();
    QString replyString = reply->readAll();
    return replyString;

我在.pro 文件的symbian: 部分添加了这一行:

symbian: 
    TARGET.CAPABILITY = "NetworkServices ReadUserData WriteUserData"

【讨论】:

以上是关于Symbian 设备上 Qt 中 QNetworkAccessManager 的网络会话错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Symbian/Qt 中检测手机方向变化的问题

Symbian^3 设备上的 QtWebKit 4.7.2 问题

symbian 的所有 Qt ui 组件是啥?

QT for symbian 中自定义菜单怎么实现?

如何在 Symbian 上的 QT 中设置应用程序图标?

在 qt for symbian 中查看图像