首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送HTTP post请求BlackBerry 10

发送HTTP post请求BlackBerry 10
EN

Stack Overflow用户
提问于 2013-02-05 16:14:16
回答 1查看 970关注 0票数 1

我正在BB10上开发一个基于C++的应用程序,其中我需要发送HTTP post请求到服务器并检索一些JSON数据。是否有一些框架类可以帮助您向服务器发送HTTP post请求?有没有链接到代码等?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 17:36:34

我记不清我是在哪个示例应用程序中找到这段代码的,但这就是我在应用程序中所需要的。

在c++中添加以下内容

头文件(.hpp)

代码语言:javascript
复制
public:
    Q_INVOKABLE void doNetworkRequest(QString url);

signals:
void networkReply(const QVariantMap &data);
void networkError();

private Q_SLOTS:
    void handleNetworkData(QNetworkReply *reply);

private:
    QNetworkAccessManager networkManager;

然后在您的主文件(.cpp)中添加以下内容

这放在主应用程序函数中

代码语言:javascript
复制
// Hook this signal so we can respond to network replies
connect(&networkManager, SIGNAL(finished(QNetworkReply *)), this,
        SLOT(handleNetworkData(QNetworkReply *)));

添加以下函数:

代码语言:javascript
复制
void Top12Wines::doNetworkRequest(QString url)
{
qDebug() << "Request URL " << url;
QUrl qurl = url;
networkManager.get(QNetworkRequest(qurl));
}

void Top12Wines::handleNetworkData(QNetworkReply *reply)
{

if (!reply->error()) {
    qDebug() << "Got network data";
    // Let's get ALL the data
    const QByteArray response(reply->readAll());

    JsonDataAccess jda;
    QVariantMap results = jda.loadFromBuffer(response).toMap();

    emit networkReply(results);

} else {
    qDebug() << "Got network error";
    emit networkError();
}

// Cleanup
reply->deleteLater();
}

然后在你的QML中,你可以像这样访问它:

代码语言:javascript
复制
    _App.networkReply.connect(checkVersion); //
    _App.networkError.connect(checkVersionError);
    _App.doNetworkRequest("http://myserver/version.json");

function checkVersion(data)
{
    _App.networkReply.disconnect(checkVersion); //disconnect links after retrieving data
    _App.networkError.disconnect(checkVersionError);
    var newVersion = data.version;
}

function checkVersionError()
{
    _App.networkReply.disconnect(checkVersion); //disconnect links after retrieving data
    _App.networkError.disconnect(checkVersionError);        
    //do something to alert user that an error occurred.
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14702839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档