1

サーバーにHTTPPOSTリクエストを送信し、JSONデータを取得する必要があるC++ベースのBB10でアプリを開発しています。サーバーにHTTPPOSTリクエストを送信するのに役立つフレームワーククラスはありますか?コードなどへのリンクはありますか?ありがとう。

4

1 に答える 1

2

このコードを見つけたサンプルアプリを思い出せませんが、これは私のアプリで必要なものには機能しました。

C++で以下を追加します

ヘッダーファイル(.hpp)

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)に追加します

これはメインアプリ機能の内部に入ります

// Hook this signal so we can respond to network replies
connect(&networkManager, SIGNAL(finished(QNetworkReply *)), this,
        SLOT(handleNetworkData(QNetworkReply *)));

これらの関数を追加します。

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で次のようにアクセスできます。

    _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.
}
于 2013-02-05T09:36:34.497 に答える