6

我正在使用 Web 服务为 BB-10 开发应用程序。在此,我想在 get 和 post 方法中解析 JSON,并且我想检查 Internet 可用性。

我怎样才能做到这一点?

4

4 回答 4

5

使用以下代码检查 Internet 可用性

bool app::isNetworkAvailable() {
    QNetworkConfigurationManager netMgr;
    QList<QNetworkConfiguration> mNetList = netMgr.allConfigurations(QNetworkConfiguration::Active);

    return (mNetList.count() > 0 && netMgr.isOnline());
}
于 2012-12-15T13:39:24.410 回答
1

我的老师创建了一个 qml 组件,显示是否有连接以及连接类型(wifi、蓝牙、运营商等)。当连接状态或使用的接口发生变化时,它也会发送一个信号。

代码托管在 github:https ://github.com/rodrigopex/CheckInternetMicroSample

于 2013-11-28T18:43:42.200 回答
0

1.HPP文件

class controller : public QObject
{
 Q_OBJECT
public:
 controller(bb::cascades::Application *app);


public Q_SLOTS:
 void sendRequest(const QString &countryID);


private Q_SLOTS:

void onFinished();

};

2.CPP文件

void controller::sendRequest(const QString &countryID)
{

QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);

const QString queryUri = QString::fromLatin1("http://192.168.1.251:410/Mobile/Service1.svc/english/Category?CountryID=%1").arg(countryID);

QNetworkRequest request(queryUri);

QNetworkReply* reply = networkAccessManager->get(request);

bool ok = connect(reply, SIGNAL(finished()), this, SLOT(onFinished()));
 Q_ASSERT(ok);
 Q_UNUSED(ok);
}


void controller::onFinished()
{
 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
 QString response;
 if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200)
 {
 JsonDataAccess jda;
 QVariantMap map = jda.loadFromBuffer(reply->readAll()).toMap();

QVariantList addresses = map["GetCategoryResult"].toList();

foreach(QVariant var, addresses) {
 QVariantMap addressMap = var.toMap();

qDebug() << "CategoryName is " << addressMap["CategoryName"].toString();
 qDebug() << "CategoryID is " << addressMap["CategoryID"].toString();
 }
 }
 else {
 qDebug() << "Server returned code " << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
 }
 }

在此处查看完整代码----> http://supportforums.blackberry.com/t5/Native-Development/webservice-help-json/mp/2569953/highlight/false#M46724

于 2013-09-05T09:09:35.867 回答
0

1)您可以根据文档通过以下方法检查可用的互联网:

bool QNetworkConfigurationManager::isOnline () const

如果系统被认为通过活动网络接口连接到另一个设备,则返回 true;否则返回假。

2) 至于 json 位,您可以使用 Qt 5 中的 json 解析器,如下所示:

Qt 中的 JSON 支持

将 Qt 5 与您的应用程序捆绑起来非常简单,但它有望很快在平台上可用。

黑莓 10 上的 Qt 5 - 超越神话

如果做不到这一点,将这几个类反向移植到 Qt 4 将非常简单。

于 2013-12-28T10:03:07.093 回答