我正在使用网络服务开发BB-10的应用程序。在这里我想在get和post方法中解析JSON,我想检查Internet的可用性。
我该怎么做?
答案 0 :(得分:5)
使用以下代码检查互联网可用性
bool app::isNetworkAvailable() {
QNetworkConfigurationManager netMgr;
QList<QNetworkConfiguration> mNetList = netMgr.allConfigurations(QNetworkConfiguration::Active);
return (mNetList.count() > 0 && netMgr.isOnline());
}
答案 1 :(得分:1)
我的老师创建了一个qml组件,显示是否存在连接以及它是什么类型的连接(wifi,蓝牙,运营商等)。当连接状态或使用的接口发生变化时,它也会发送信号。
代码托管在github:https://github.com/rodrigopex/CheckInternetMicroSample
答案 2 :(得分: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();
}
}
在此处查看完整代码 ----&gt; http://supportforums.blackberry.com/t5/Native-Development/webservice-help-json/m-p/2569953/highlight/false#M46724
答案 3 :(得分:0)
1)您可以按照documentation按照以下方法检查互联网:
bool QNetworkConfigurationManager :: isOnline()const
如果系统被认为通过活动网络接口连接到另一个设备,则返回true;否则返回false。
2)至于json位,你可以使用Qt 5中的json解析器,如下所示:
将Qt 5捆绑在您的应用程序中非常简单,但很快就可以在平台上使用。
Qt 5 on BlackBerry 10 - Beyond the Myth
如果做不到这一点,那么将这几个类反向移植到Qt 4将非常简单。