Json 黑莓10级联-检查互联网连接

Json 黑莓10级联-检查互联网连接,json,blackberry-10,blackberry-cascades,Json,Blackberry 10,Blackberry Cascades,我正在使用web服务为BB-10开发一个应用程序。在本文中,我想在get和post方法中解析JSON,并检查Internet的可用性 我该怎么做 使用以下代码检查互联网可用性 bool app::isNetworkAvailable() { QNetworkConfigurationManager netMgr; QList<QNetworkConfiguration> mNetList = netMgr.allConfigurations(QNetworkConfi

我正在使用web服务为BB-10开发一个应用程序。在本文中,我想在get和post方法中解析JSON,并检查Internet的可用性


我该怎么做

使用以下代码检查互联网可用性

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

    return (mNetList.count() > 0 && netMgr.isOnline());
}
bool应用程序::isNetworkAvailable(){
QNetworkConfigurationManager netMgr;
QList mNetList=netMgr.allConfigurations(QNetworkConfiguration::Active);
返回(mNetList.count()>0&&netMgr.isOnline());
}

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();

};
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();
 }
 }

2.CPP文件

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();

};
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();
 }
 }
void控制器::sendRequest(const QString&countryID)
{
QNetworkAccessManager*networkAccessManager=新的QNetworkAccessManager(此);
常量QString queryUri=QString::fromLatin1(“http://192.168.1.251:410/Mobile/Service1.svc/english/Category?CountryID=%1arg(countryID);
QNetworkRequest请求(queryUri);
QNetworkReply*reply=networkAccessManager->get(请求);
bool ok=connect(应答,信号(finished()),this,插槽(onFinished());
Q_断言(ok);
Q_未使用(正常);
}
void控制器::onFinished()
{
QNetworkReply*reply=qobject_cast(发送方());
QString反应;
如果(回复->属性(QNetworkRequest::HttpStatusCodeAttribute).toInt()==200)
{
JsonDataAccess jda;
QVariantMap=jda.loadFromBuffer(reply->readAll()).toMap();
QVariantList addresses=map[“GetCategoryResult”].toList();
foreach(QVariant变量、地址){
QVariantMap addressMap=var.toMap();

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

代码托管在github:

1)您可以按照以下方法检查可用的internet:

bool QNetworkConfigurationManager::isOnline()常量

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

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

将Qt5捆绑到您的应用程序上非常简单,但它有望很快在平台上可用


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

我运行了这个,但得到的结果是“false”只有。是否有任何库我必须添加。还有一件事我无法连接Blackeberry-10模拟器中的WIFI。请给我任何有关这方面的指导。我正在模拟器上测试此代码,它给了我
false
。请告诉我如何检查模拟器?这太长了。这可以用一行来代替。S请看我下面的答案。我也总是得到“假”。请让我知道,如果你解决了这个问题